Xóa hết các Sheet chỉ để lại những sheet theo chỉ định

Liên hệ QC

kieuhuy_bmt

Thành viên thường trực
Tham gia
18/10/07
Bài viết
288
Được thích
36
Nghề nghiệp
Đang thất nghiệp
Lần chỉnh sửa cuối:
Cấu trúc nó như thế này, bạn tuỳ biến nhé
Mã:
Sub XoaSheet()
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> "Sheet1" Or sh.Name <> "Sheet2" Then
            MsgBox sh.Delete
        End If
    Next
End Sub
 
Upvote 0
Cấu trúc nó như thế này, bạn tuỳ biến nhé
Mã:
Sub XoaSheet()
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> "Sheet1" Or sh.Name <> "Sheet2" Then
            MsgBox sh.Delete
        End If
    Next
End Sub
Xoá sheet mà thiếu câu lệnh displayalerts thì bị hỏi hoài mệt lắm
Xem hàng lạ đây
PHP:
Sub XoaSheet()
Application.DisplayAlerts = False
Dim SheetsToKeep, sh, chk
SheetsToKeep = Array("a", "b", "c")
For Each sh In Worksheets
   chk = Filter(SheetsToKeep, sh.Name, 1)
   If UBound(chk) <> 0 Then
      sh.Delete
   End If
Next
Application.DisplayAlerts = True
End Sub
 
Upvote 0
Xoá sheet mà thiếu câu lệnh displayalerts thì bị hỏi hoài mệt lắm
Xem hàng lạ đây
PHP:
Sub XoaSheet()
Application.DisplayAlerts = False
Dim SheetsToKeep, sh, chk
SheetsToKeep = Array("a", "b", "c")
For Each sh In Worksheets
   chk = Filter(SheetsToKeep, sh.Name, 1)
   If UBound(chk) <> 0 Then
      sh.Delete
   End If
Next
Application.DisplayAlerts = True
End Sub

Biến chk là thừa. Chỉ cần
If UBound(Filter(SheetsToKeep, sh.Name, 1)) <> 0 Then

Thêm nữa, thường thuiờng trong công việc xoá, người ta đếm đếm chỗ còn lại, xem tới một giới hạn nào đó thì dừng. Trong bài này cần đếm xem còn lại 1 thì dừng.
 
Upvote 0
Xin góp vui thêm một cách:
[GPECODE=vb]Sub DeleteSheets()
Dim Ws As Worksheet, SheetsToKeep As String
Application.DisplayAlerts = False
SheetsToKeep = ".Sheet1.Sheet3.Sheet4.Sheet10."
For Each Ws In ThisWorkbook.Sheets
If InStr(1, SheetsToKeep, "." & Ws.Name & ".", vbTextCompare) = 0 Then Ws.Delete
Next
Application.DisplayAlerts = True
End Sub[/GPECODE]
 
Upvote 0
Em làm theo thứ tự từ bài của bác Dhn46 nó báo lỗi
này "02 ảnh" các Bác xem sửa giúp
 

File đính kèm

  • Loi_1.jpg
    Loi_1.jpg
    23.1 KB · Đọc: 1
  • Loi_2.jpg
    Loi_2.jpg
    37.8 KB · Đọc: 5
  • Code_Tao bieu 13b_OF 2007 co X_Y.xls
    888.5 KB · Đọc: 4
Upvote 0
Em sửa như Ở bài 4 nó báo lỗi này!
 

File đính kèm

  • Loi_3.jpg
    Loi_3.jpg
    68.6 KB · Đọc: 38
Upvote 0
Em thay tên sheet vào Code ờ bài 5, nó báo lỗi này. Chắc tại cái File của em có vấn đề, em gửi lên mong các bác tìm nguyên nhân giúp.
 

File đính kèm

  • Code_Tao bieu 13b_OF 2007 co X_Y.xls
    890.5 KB · Đọc: 16
  • Loi_4.jpg
    Loi_4.jpg
    81.9 KB · Đọc: 2
Upvote 0
Lùa hết sheet nào muốn để lại sang 1 bên, chọn hết các sheet còn lại vào xoá đi là xong chuyện. Tội gì phải hành xác vậy trời
 
Upvote 0
Qua các thử nghiệm của bạn tôi thấy bạn chưa biết nhiều về VBA. Với Code bài #6 bạn chú ý sheet name khác sheet code. Cái sheet1, sheet2 đó là cái sheet name hay hiểu nôm na nó là tên sheet đó bạn.

Bạn tự tuỳ biến nhé.
 
Upvote 0
Em thay tên sheet vào Code ờ bài 5, nó báo lỗi này. Chắc tại cái File của em có vấn đề, em gửi lên mong các bác tìm nguyên nhân giúp.

File bạn có sheet ẩn nên lỗi là phải rồi
PHP:
Sub XoaSheet()
Application.DisplayAlerts = False
Dim SheetsToKeep, sh, chk
SheetsToKeep = Array("DATA", "Thongtin bao cao")
For Each sh In Worksheets
   chk = Filter(SheetsToKeep, sh.Name, 1)
   If UBound(chk) <> 0 Then
     sh.Visible = True
     sh.Delete
   End If
Next
Application.DisplayAlerts = True
End Sub
 
Upvote 0
File bạn có sheet ẩn nên lỗi là phải rồi
PHP:
Sub XoaSheet()
Application.DisplayAlerts = False
Dim SheetsToKeep, sh, chk
SheetsToKeep = Array("DATA", "Thongtin bao cao")
For Each sh In Worksheets
   chk = Filter(SheetsToKeep, sh.Name, 1)
   If UBound(chk) <> 0 Then
     sh.Visible = True
     sh.Delete
   End If
Next
Application.DisplayAlerts = True
End Sub
Cảm ơn bác Quanghai1969 nhiều. Vấn đề đã được giải quyết. Tuy nhiên cái Sheet ẩn ấy nó phục vụ cho chương trình tổng hợp dữ liệu vào. Vì nhiều sheet quá (hơn 200 sheet) nên mỗi lần làm lại phải xóa bằng tay nó mất công. Vì vậy mới nhờ đến cai Code xóa Sheet. Bác sửa lại giúp em, chừa thêm hoặc không xóa cái sheet ẩn với.
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bác Quanghai1969 nhiều. Vấn đề đã được giải quyết. Tuy nhiên cái Sheet ẩn ấy nó phục vụ cho chương trình tổng hợp dữ liệu vào. Vì nhiều sheet quá (hơn 200 sheet) nên mỗi lần làm lại phải xóa bằng tay nó mất công. Vì vậy mới nhờ đến cai Code xóa Sheet. Bác sửa lại giúp em, chừa thêm hoặc không xóa cái sheet ẩn với.
Thì xem coi nó tên gì, đưa vào nhóm không xoá là được
 
Upvote 0
Em đã làm được rồi! cảm ơn tất cả nhà.
 
Upvote 0
Web KT
Back
Top Bottom