Xoá sheet trên excel bằng macro (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

cuabacang

Thành viên mới
Tham gia
11/8/14
Bài viết
32
Được thích
0
thanks ALL mọi người!
cả nhà cho minh hỏi một chút kinh nghiệm như sau nhé:
hiện tại file excel của minh nó rất nhiều sheet nặng vì thế mình muốn tạo ra 1 sheet riêng rồi tạo macro để khi muốn ấn vào là nó xoá các sheet mình đã chọn( mình có các sheet 1.11, 1.12, 1.13, 2.11, 2.12, 2.13..... vv) mình muốn là khi ấn cái là nó sẽ xoá các sheet mà tên sheet đầu"1."hoăc"2." vv
vậy rất mong ace trên GPE giúp đỡ nhé.
 
thanks ALL mọi người!
cả nhà cho minh hỏi một chút kinh nghiệm như sau nhé:
hiện tại file excel của minh nó rất nhiều sheet nặng vì thế mình muốn tạo ra 1 sheet riêng rồi tạo macro để khi muốn ấn vào là nó xoá các sheet mình đã chọn( mình có các sheet 1.11, 1.12, 1.13, 2.11, 2.12, 2.13..... vv) mình muốn là khi ấn cái là nó sẽ xoá các sheet mà tên sheet đầu"1."hoăc"2." vv
vậy rất mong ace trên GPE giúp đỡ nhé.
Sheet nào bắt đầu là số thì code mần thịt hết, cẩn thân nhá
PHP:
Sub xoasheet()
Application.DisplayAlerts = False
Dim sh As Worksheet
For Each sh In Worksheets
   If IsNumeric(Left(sh.Name, 1)) Then      
      sh.Delete
   End If
Next
Application.DisplayAlerts = True
End Sub
 
Lần chỉnh sửa cuối:
thanks ALL mọi người!
cả nhà cho minh hỏi một chút kinh nghiệm như sau nhé:
hiện tại file excel của minh nó rất nhiều sheet nặng vì thế mình muốn tạo ra 1 sheet riêng rồi tạo macro để khi muốn ấn vào là nó xoá các sheet mình đã chọn( mình có các sheet 1.11, 1.12, 1.13, 2.11, 2.12, 2.13..... vv) mình muốn là khi ấn cái là nó sẽ xoá các sheet mà tên sheet đầu"1."hoăc"2." vv
vậy rất mong ace trên GPE giúp đỡ nhé.

"11." có xoá không?
 
Miễn chủ thớt xoá được là ok rồi. Nhưng mà chưa nghe chủ thớt la làng lên chắc có thể xoá được

******
Hic mà hình như hỏi chủ thớt, đâu phải hỏi code mình có xóa được không. Hơi vô duyên rồi.
 
Lần chỉnh sửa cuối:
Có thể đưa tên sheet cần xoá vào InputBox để tiện lựa chọn.
PHP:
Sub DelWs()
Application.DisplayAlerts = False
Dim Ws As Worksheet, WsName
WsName = Application.InputBox("Nhap ten sheet:")
For Each Ws In ThisWorkbook.Worksheets
    If UCase(Ws.Name) Like UCase(WsName & "*") And Ws.Name <> "Sheet1" Then
        Ws.Delete
    End If
Next Ws
Application.DisplayAlerts = True
End Sub
 
Có thể đưa tên sheet cần xoá vào InputBox để tiện lựa chọn.
...

Đã lỡ viết hàm kiểu dùng lâu dài thì chơi luôn phần code "Select" những sheets đạt điều kiện, đưa chuỗi tên lên MsgBox YesNoCancel để cho người dùng xem lại cho chắc ăn, nếu Yes thì delete SelectedSheets
 
rất cảm ơn anh Quang Hải và các bản, như mà khi mình là như macro cua anh Hải thì nó lại xóa hết các sheet là sao. vây mong các ae nào giúp đỡ có thẻ làm 1 bản excel đê mình tiện xem các làm của các bạn. thank all
 
rất cảm ơn anh Quang Hải và các bản, như mà khi mình là như macro cua anh Hải thì nó lại xóa hết các sheet là sao. vây mong các ae nào giúp đỡ có thẻ làm 1 bản excel đê mình tiện xem các làm của các bạn. thank all
Nói rồi mà, sheet nào có tên bắt đầu là số thì nó mần thịt hết. Chắc không tin chứ gì
PHP:
Sub xoasheet()
Application.DisplayAlerts = False
Dim sh As Worksheet
For Each sh In Worksheets
   If Left(sh.Name, 1)= 1 Then  
      If Left(sh.Name, 1)= 2 Then    
         sh.Delete
      End If
   End If
Next
Application.DisplayAlerts = True
End Sub
 
Lần chỉnh sửa cuối:
Nói rồi mà, sheet nào có tên bắt đầu là số thì nó mần thịt hết. Chắc không tin chứ gì

Mã:
Sub xoasheet()
Application.DisplayAlerts = False
Dim sh As Worksheet
For Each sh In Worksheets
[COLOR=#ff0000]   If Left(sh.Name, 1)= 1 Then  
      If Left(sh.Name, 1)= 2 Then [/COLOR]   
         sh.Delete
      End If
   End If
Next
Application.DisplayAlerts = True
End Sub
Code này thì chắc chắn là không xóa sheet nào rồi.
 
Code này thì chắc chắn là không xóa sheet nào rồi.
ừ há, sao lại cho 2 cái And để xóa vậy trời. Lẽ ra phải vầy chứ

PHP:
Sub xoasheet()
Application.DisplayAlerts = False
Dim sh As Worksheet
For Each sh In Worksheets
   If Left(sh.Name, 1) = 1 Or Left(sh.Name, 1) = 2 Then
      sh.Delete
   End If
Next
Application.DisplayAlerts = True
End Sub
 
Lần chỉnh sửa cuối:
rất cảm ơn các bác đã giúp đỡ mình, mình sẽ tham khảo để chọn cho mình macro hợp lý để áp dụng, thank's all, hy vọng sẽ góp phần nâng cao trình độ excel
 
hic, mấy hôm nghỉ lên không lên được mạng, vậy các bác cho em hỏi nếu em có các sheet A110, A120, A130...., A210, A220, A230..., .... vậy mình sẽ đặt macro sao cho nó sẽ xóa các sheet có đầu A1 hoặc các đầu A2, A3....
Thank's all
 
hic, mấy hôm nghỉ lên không lên được mạng, vậy các bác cho em hỏi nếu em có các sheet A110, A120, A130...., A210, A220, A230..., .... vậy mình sẽ đặt macro sao cho nó sẽ xóa các sheet có đầu A1 hoặc các đầu A2, A3....
Thank's all
Nếu là mình thì sẽ mò theo kiểu abc. Nghĩ sao thì kêu code làm y vậy cho khoẻ.
Nếu có 100 dk thì code 100 dòng mỏi tay luôn
PHP:
For Each sh In Worksheets
   If Left(sh.Name, 2) = "A1" Then sh.Delete
   If Left(sh.Name, 2) = "A2" Then sh.Delete      
   If Left(sh.Name, 2) = "A3" Then sh.Delete
Next
 
gửi bác Quang Hải ý của em là muốn tạo ra tex box ví dụ xóa sheet đầu A1 là 1 texbox clip vào đấy là nó sẽ xóa sheet đó, và nhưng cái tương tự bác có giúp em cái macro này hộ em vì phần em làm cái này đang là phần chốt. Thank's Bác
 
Tất cả các sheets coa tên khởi đầu là "A1", "A2", "A3":
IF Sh.Name Like "A[123]*"
 
bạn vetmini thanh's bạn bạn có thể làm giúp mình ra dừng nói tắt dc ko, mình trình độ excel kém lắm thank's
 
bạn vetmini thanh's bạn bạn có thể làm giúp mình ra dừng nói tắt dc ko, mình trình độ excel kém lắm thank's

Tôi kỵ những câu viết nửa Việt nửa ngoại.
Tôi đã nói hơn một lần rồi. Có những trường hợp câu nửa Việt nửa ngoại mang ý mỉa mai châm biếm. Tôi không hiểu người viết cố ý vì rất giỏi về tiếng ngoại, hay vô tình vì không biết cách dùng.
 
ôi trời, thực ra mình chỉ cố gắng hỏi các bác thôi mà! còn từ Thank's mong bác "vetmini" cái tên cũng nửa Anh nửa Việt thông cảm vì nó như câu cửa miệng thôi, chứ mình cũng ko thích nói cái kiểu đấy bạn cứ xem cái từ "Thank's" mình đang cố gắng để mọi người giúp đỡ mình thôi, biết mỗi người mỗi ý mà, Vậy mong mọi người có giúp đỡ và thông cảm lẫn nhau đừng chỉ 1, 2 lỗi nhỏ mà làm mình phải khó chịu. EM XIN HẾT VÀ XIN CẢM ƠN ANH VETMINI ĐÃ GIÚP ĐỠ. VẬY MONG ANH GIÚP NỐT VẤN ĐỀ CỦA EM Ạ!
 
... "vetmini" cái tên cũng nửa Anh nửa Việt ...

Tên là tên. Chả nhẽ ông Blackmore tôi phải gọi là ông Đen Thêm à?
Hồi tôi còn nhỏ, những con vẹt chỉ bằng nắm tay người ta gọi là vẹt mini, từ này dùng để châm chọc những người mà hay nói theo người khác mà chả hiểu mình nói gì. Bây giờ thì bạn hiểu ý tôi nói về vấn đề "mỉa mai" chưa?

Mã:
dim sh as variant, dauTien as boolean
dauTien = True
For Each sh in WorkSheets
If sh.Name Like "A[123]*" Then
  sh.Select dauTien
  dauTien = False
End If
Next sh
ActiveWindow.SelectedSheets.Delete
 
Rất cảm ơn bác Vet"mini" em đã áp dụng vào bài excel của em và thành công. Có lẽ em nên đổi tên thành Vẹt to lớn mất hehe, em nói đùa bác thôi, dù sao cũng rút đc ra kinh nghiệm từ bác. Cho em xin lỗi bác nốt lần này "Thank's Bác"
 
gửi bác Vetmini sau 1 hồi em lại thấy em đúng là con vẹt to lớn thật, vấn đề là như sau, nhờ bác em đã biết cách xóa sheet( chủ yếu là xóa nhanh nhưng sheet ko thuộc phân công của mình cho nhẹ file excel) nhưng giờ lại tồn tại 1 vấn đề là khi em ẩn sheet thì mã mà bác hướng đẫn em lại ko dùng đc, ví dụ em muốn xóa sheet đầu A1 nhưng em lại để những sheet đó ẩn nên mã bác em ko dùng dc, vậy kính mong bác cho vẹt to lớn là em được to lớn thêm dc ko ạ. CẢM ƠN BÁC!
 
gửi bác Vetmini sau 1 hồi em lại thấy em đúng là con vẹt to lớn thật, vấn đề là như sau, nhờ bác em đã biết cách xóa sheet( chủ yếu là xóa nhanh nhưng sheet ko thuộc phân công của mình cho nhẹ file excel) nhưng giờ lại tồn tại 1 vấn đề là khi em ẩn sheet thì mã mà bác hướng đẫn em lại ko dùng đc, ví dụ em muốn xóa sheet đầu A1 nhưng em lại để những sheet đó ẩn nên mã bác em ko dùng dc, vậy kính mong bác cho vẹt to lớn là em được to lớn thêm dc ko ạ. CẢM ƠN BÁC!
Nếu không rành về code thì cứ chọn mấy cái cơ bản mà phang tới.
Đối với câu lệnh Select thì sheet đó phải đang ở chế độ hiện (Visible)
Cho nên trước khi Select phải cho nó hiện ra bằng lệnh .Visible=True, rồi mới xoá được
 
thực ra là em học về kinh tế mới ra trường, kiến thức về excel đúng là gà mờ lắm, chỉ là em muốn xin các bác 1 số macro hay để áp dụng vào thực tiễn, vậy mong các bác thông cảm vì nhiều câu hỏi hơi ngây ngô, và có gì các bác chi đẫn chi tiết cho hộ em mới dc ko, mặc dù mang tiếng ăn sẵn, nhưng vì trình độ chuyên môn em thấp quá, cảm ơn bác
 
em cảm ơn bác Quang Hải nhờ bác nói mà đã vỡ ra 1 số kiến thức và em đã viết thêm 1 đoạn mã vào áp dụng của bác Vetmini và đã thành công. Vậy lần cuối ở chủ đề này em xin cảm ơn mọi người đặc biệt là bác Q.Hải và bác Vẹt, xin cảm ơn 2 bác
 
Có thể đưa tên sheet cần xoá vào InputBox để tiện lựa chọn.
PHP:
Sub DelWs()
Application.DisplayAlerts = False
Dim Ws As Worksheet, WsName
WsName = Application.InputBox("Nhap ten sheet:")
For Each Ws In ThisWorkbook.Worksheets
    If UCase(Ws.Name) Like UCase(WsName & "*") And Ws.Name <> "Sheet1" Then
        Ws.Delete
    End If
Next Ws
Application.DisplayAlerts = True
End Sub
Có cách nào để định cho nó một ngày tháng năm nào đó tự xóa các sheet mình định sẳn không Bạn.
 
Nếu là mình thì sẽ mò theo kiểu abc. Nghĩ sao thì kêu code làm y vậy cho khoẻ.
Nếu có 100 dk thì code 100 dòng mỏi tay luôn
PHP:
For Each sh In Worksheets
   If Left(sh.Name, 2) = "A1" Then sh.Delete
   If Left(sh.Name, 2) = "A2" Then sh.Delete      
   If Left(sh.Name, 2) = "A3" Then sh.Delete
Next
@Quang Hai cho em hỏi có cách này để thêm vào ngày tháng năm tự xóa các sheet định sẳn không Anh? giúp Em với
 
Lần chỉnh sửa cuối:

Bài viết mới nhất

Back
Top Bottom