Xóa nhiều sheet cùng lúc trong excel (1 người xem)

Liên hệ QC

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

linhung8589

Thành viên mới
Tham gia
11/7/11
Bài viết
16
Được thích
2
Cả nhà ơi cho e hỏi, e muốn xóa nhiều sheet cùng lúc trong excel thì như thế nào ah? Ví dụ có 10 sheet chỉ để lại 1 sheet, xóa 9 sheet còn lại ah?
 
Cả nhà ơi cho e hỏi, e muốn xóa nhiều sheet cùng lúc trong excel thì như thế nào ah? Ví dụ có 10 sheet chỉ để lại 1 sheet, xóa 9 sheet còn lại ah?

Đặt tên sheet cần chừa lại là GPE.
Chạy Code này sẽ xoá sạch sành sanh.
PHP:
Public Sub GPE()
Application.DisplayAlerts = False
Dim Ws As Worksheet
For Each Ws In Worksheets
    If Ws.Name <> "GPE" Then Ws.Delete
Next Ws
Application.DisplayAlerts = True
End Sub
 
Cả nhà ơi cho e hỏi, e muốn xóa nhiều sheet cùng lúc trong excel thì như thế nào ah? Ví dụ có 10 sheet chỉ để lại 1 sheet, xóa 9 sheet còn lại ah?

Đơn giản chọn (select) các sheet (cần xoá) đó ở tab Sheet (góc trái dưới màn hình excel) rồi RightClick --> Delete là xong,

Các chọn nhanh, bỏ chọn 1 sheet, chắc chắn bạn làm tốt
 
Click vào sheet đầu tiên
Nhấn và giữ phím Shift, click vào sheet cuối cùng (tức là chọn tất cả các sheets)
Nhấn và giữ phím Control, click vào sheet muốn giữ lại (tức là loại nó ra khỏi số sheets vừa chọn)
Click chuột phải, chọn delete
Hết
 
Sau khi làm cái print multi sheet, tiện thể làm cái delete multi sheet.
Chủ topic nếu hứng thú thì tải về dùng nhé.
 

File đính kèm

Sau khi làm cái print multi sheet, tiện thể làm cái delete multi sheet.
Chủ topic nếu hứng thú thì tải về dùng nhé.
Tôi thấy chổ
Mã:
Sheets(ListBox1.List(j - 1, 0)).Delete
chưa ổn nhé bác.
Mã:
Private Sub B_del_Click()
Application.DisplayAlerts = False
Dim j As Integer, n&, t&

With ListBox1
    For t = 0 To .ListCount - 1
    If .Selected(t) Then n = n + 1
    Next
'TH1:
If n = 0 Then
    Exit Sub
End If
'TH2:
If n = ListBox1.ListCount Then
    MsgBox "Workbook toi thieu phai co mot (01) worksheet!" & vbNewLine & "Uncheck sheet can giu lai.", vbInformation, "Thông báo"
    Exit Sub
End If
'TH3:
If n >= 1 And n < ListBox1.ListCount Then
    For j = 1 To ListBox1.ListCount
       If ListBox1.Selected(j - 1) = True Then
         'Lỡ Sheet đang ẩn thì sẽ báo lỗi nhé.
          Sheets(ListBox1.List(j - 1, 0)).Delete
          ListBox1.Selected(j - 1) = False
       End If
    Next
    ListBox1.Clear
    Call UserForm_Initialize
End If

End With

Application.DisplayAlerts = False
End Sub
 
Đặt tên sheet cần chừa lại là GPE.
Chạy Code này sẽ xoá sạch sành sanh.
PHP:
Public Sub GPE()
Application.DisplayAlerts = False
Dim Ws As Worksheet
For Each Ws In Worksheets
    If Ws.Name <> "GPE" Then Ws.Delete
Next Ws
Application.DisplayAlerts = True
End Sub
bác Ba Tê ơi cho em hỏi nếu muốn để lại 3 sheet còn lại xóa hết các sheet khác thì core viết lại thể nào vậy bác. Mong bác chỉ em dùm, em cảm ơn bác.
 
bác Ba Tê ơi cho em hỏi nếu muốn để lại 3 sheet còn lại xóa hết các sheet khác thì core viết lại thể nào vậy bác. Mong bác chỉ em dùm, em cảm ơn bác.
Bạn dùng thêm điều kiện And. Điều kiện và cho các sheet bạn muốn để lại thì sẽ thực hiện được lệnh thôi.
 
Tôi thấy chổ
Mã:
Sheets(ListBox1.List(j - 1, 0)).Delete
chưa ổn nhé bác.
Mã:
Private Sub B_del_Click()
Application.DisplayAlerts = False
Dim j As Integer, n&, t&

With ListBox1
    For t = 0 To .ListCount - 1
    If .Selected(t) Then n = n + 1
    Next
'TH1:
If n = 0 Then
    Exit Sub
End If
'TH2:
If n = ListBox1.ListCount Then
    MsgBox "Workbook toi thieu phai co mot (01) worksheet!" & vbNewLine & "Uncheck sheet can giu lai.", vbInformation, "Thông báo"
    Exit Sub
End If
'TH3:
If n >= 1 And n < ListBox1.ListCount Then
    For j = 1 To ListBox1.ListCount
       If ListBox1.Selected(j - 1) = True Then
         'Lỡ Sheet đang ẩn thì sẽ báo lỗi nhé.
          Sheets(ListBox1.List(j - 1, 0)).Delete
          ListBox1.Selected(j - 1) = False
       End If
    Next
    ListBox1.Clear
    Call UserForm_Initialize
End If

End With

Application.DisplayAlerts = False
End Sub

bác @giaiphap tích hợp luôn chức năng xoá/unhide sheet hàng loạt vào vnTools được ko ạ? coi như cập nhật ver 2021 lun :)

Bạn thử nhấn phím Ctrl trong khi mở Excel xem có thông báo lỗi gì không? Nếu vẫn còn bạn thử xem cách này thế nào nhé.
http://answers.microsoft.com/en-us/...k/5da89258-34fa-4bcc-96bc-223787da6ada?auth=1
Hoặc
http://www.codedawn.com/index/-compile-error-in-hidden-module-message-in-excel
bác có chạy được add-in RegEx của trang Codedawn trên win 64bit ko ạ? e thử các kiểu vẫn bị lỗi hidden module
 

File đính kèm

Lần chỉnh sửa cuối:
bác @giaiphap tích hợp luôn chức năng xoá/unhide sheet hàng loạt vào vnTools được ko ạ? coi như cập nhật ver 2021 lun :)


bác có chạy được add-in RegEx của trang Codedawn trên win 64bit ko ạ? e thử các kiểu vẫn bị lỗi hidden module
Trong cái VnTools đã có sẳn chức năng Hide và Unhide nhều sheet cùng lúc rồi bạn nhé, còn vụ nâng cấp thì mình chưa tính (Do không rảnh).
Cái RegEx Find-Replace.xlam có sử dụng một số hàm API, mà hàm API thì 32bit chạy khác và 64bit chạy khác. Cái hiện tại chỉ viết cho 32bit thôi, bạn klhông thể sử dụng được cho 64bit. Muốn sử dụng 64Bit bạn phải liên hệ tác giả nhé, còn sửa code là tôi không làm được.
 
Trong cái VnTools đã có sẳn chức năng Hide và Unhide nhều sheet cùng lúc rồi bạn nhé, còn vụ nâng cấp thì mình chưa tính (Do không rảnh).
Cái RegEx Find-Replace.xlam có sử dụng một số hàm API, mà hàm API thì 32bit chạy khác và 64bit chạy khác. Cái hiện tại chỉ viết cho 32bit thôi, bạn klhông thể sử dụng được cho 64bit. Muốn sử dụng 64Bit bạn phải liên hệ tác giả nhé, còn sửa code là tôi không làm được.
sorry bác e nhầm. ý e là tuỳ chọn xoá/hide sheet hàng loạt cơ ạ. Cái tính năng ẩn nhiều sheet trong vnTools hơi bị dị còn ẩn/xoá thủ công (giữ shift + chọn sheet) thì lại mất thời gian >"<

1622168328113.png

Untitled.png


P/s: Tiếc cái add-in RegEx quá bác nhỉ, add-in đó mà biết dùng thì tiện khủng khiếp
 

File đính kèm

Lần chỉnh sửa cuối:
sorry bác e nhầm. ý e là tuỳ chọn xoá/hide sheet hàng loạt cơ ạ. Cái tính năng ẩn nhiều sheet trong vnTools hơi bị dị còn ẩn/xoá thủ công (giữ shift + chọn sheet) thì lại mất thời gian >"<

View attachment 259556

View attachment 259555


P/s: Tiếc cái add-in RegEx quá bác nhỉ, add-in đó mà biết dùng thì tiện khủng khiếp
Tiếp nhận ý kiến, phiên bản sau có nâng cấp sẽ cải thiện và được sẽ đưa chức năng như Add-ins RegEx vào luôn.
 
Tự record macro làm cho 1 sheet rồi áp dụng cho các sheet khác.
 
Tự record macro làm cho 1 sheet rồi áp dụng cho các sheet khác.
mình tìm được macro rồi cơ mà làm sao để macro lưu lại trong excel như add-in bác nhỉ?
Mã:
Attribute VB_Name = "Module1"
Sub PrintTitle()

Dim ws As Worksheet

For Each ws In ActiveWorkbook.Sheets

'For Each ws In ActiveWindow.SelectedSheets

If ws.Type = xlWorksheet Then

ws.PageSetup.PrintTitleRows = "$5:$6"

End If

Next

End Sub
 
Đơn giản thế này thôi.
Gán phím tắt rồi lưu thành file.xlam là dùng thôi.
PHP:
Sub setPrintTitle()
Const sRowsTitle = "$5:$6"
Dim ws as worksheet
For each ws in thisworkbook.Worksheets
ws.PageSetup.PrintTitleRows = sRowsTitle
Next ws
End Sub
tạo phím tắt ntn vậy bác, m vào mục custom ripbon ko thấy @@
 
Lần chỉnh sửa cuối:
bác Ba Tê ơi cho em hỏi nếu muốn để lại 3 sheet còn lại xóa hết các sheet khác thì core viết lại thể nào vậy bác. Mong bác chỉ em dùm, em cảm ơn bác.
Theo tôi, cứ sheet nào muốn xóa, bạn nhập vào ô A1 của sheet đó 1 văn bản hiếm. Sau đó sửa code của bác Ba Tê
Mã:
Public Sub GPE()
' văn bản hiếm là "!@#$"
Application.DisplayAlerts = False
Dim Ws As Worksheet
For Each Ws In Worksheets
'    If Ws.Name <> "GPE" Then Ws.Delete    ''chuyển thành chú thích rồi
    If Ws.Range("A1") = "!@#$" Then Ws.Delete
Next Ws
Application.DisplayAlerts = True
End Sub
Chú ý là đã tính xóa nó đi thì nhập gì vào A1 chẳng được. Nhưng nếu là văn bản thường thì có thể sheets nào đó cũng cùng nội dung thì "chết"
 
Sorry các bác e bị quen tay ^^
Bác @giaiphap bổ sung tính năng tạo print tit nhiều sheet vào vn-tools bản mới nha bác. Kiểu giữ shift chọn các sheet cần tạo print tit rùi click vào button [tạo tits] hoặc phím tắt sẽ hiện ra một ô để nhập giá trị PrintTitleRows
ws.PageSetup.PrintTitleRows = "........."


Bạn muốn người khác trả lời rõ ràng thì bạn phải viết rõ ràng trước đã (Do bạn viết tắt nên sẽ được trả lời bằng viết tắt).
View attachment 266680
 

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

Back
Top Bottom