snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
Sub DeleteSheetsByName()
Dim ws As Worksheet
Dim sheetNamesToDelete() As Variant
Dim sheetName As Variant
sheetNamesToDelete = Array("T_01", "T_02", "S_01", "S_02")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
For Each sheetName In sheetNamesToDelete
If ws.Name = sheetName Then
On Error Resume Next
ws.Delete
On Error GoTo 0
Exit For
End If
Next sheetName
Next ws
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "ลบชีทเสร็จเรียบร้อย"
End Sub
Sub DeleteSheets_ByName()
Dim ws As Worksheet
Dim sheetNamesToDelete() As Variant
Dim sheetName As Variant, i As Integer
sheetNamesToDelete = Array("T_01", "T_02", "S_01", "S_02")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
' For Each sheetName In sheetNamesToDelete
For i = LBound(sheetNamesToDelete) To UBound(sheetNamesToDelete)
If sheetNamesToDelete(i) = ws.Name Then
' On Error Resume Next
ws.Delete
' On Error GoTo 0
' Exit For
End If
Next i
' Next sheetName
Next ws
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "ลบชีทเสร็จสิ้น"
End Sub
Sub DeleteSheetsByName()
Dim ws As Worksheet
' Dim sheetNamesToDelete() As Variant
Dim sheetNamesToDelete As String
Dim sheetName As Variant
' sheetNamesToDelete = Array("T_01", "T_02", "S_01", "S_02")
sheetNamesToDelete = "T_01,T_02,S_01,S_02"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
' For Each sheetName In sheetNamesToDelete
If InStr(sheetNamesToDelete, ws.Name) Then
' On Error Resume Next
ws.Delete
' On Error GoTo 0
' Exit For
End If
' Next sheetName
Next ws
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "ลบชีทเสร็จสิ้น"
End Sub
Sub DeleteSheetsWithPrefix()
Dim ws As Worksheet
Dim i As Long
Dim prefixList As Variant
Dim prefix As Variant
Dim deleteSheet As Boolean
' ปิดแจ้งเตือน
Application.DisplayAlerts = False
' กำหนดคำนำหน้า (Prefix) ที่ต้องการลบ
prefixList = Array("T_", "S_")
' วนลูปจากหลังมาหน้าเพื่อป้องกัน error ขณะลบ
For i = ThisWorkbook.Sheets.Count To 1 Step -1
deleteSheet = False
For Each prefix In prefixList
If UCase(Left(ThisWorkbook.Sheets(i).Name, Len(prefix))) = UCase(prefix) Then
deleteSheet = True
Exit For
End If
Next prefix
' ถ้าตรงเงื่อนไขให้ลบ
If deleteSheet Then
ThisWorkbook.Sheets(i).Delete
End If
Next i
' เปิดแจ้งเตือนกลับ
Application.DisplayAlerts = True
MsgBox "ลบชีทที่มี Prefix T_, S_เรียบร้อยแล้ว", vbInformation
End Sub