Vba:如果名称包含特定文本,则删除工作表
您可以在 VBA 中使用以下语法来删除 Excel 工作簿中包含特定文本的每个工作表:
SubDeleteSheets ()
Dim TextToFind As String
Dim TextWildcard As String
Dim Ws As Worksheet
Dim i As Integer
'prompt user for text to search for in sheet names
TextToFind = Application.InputBox(" Delete Sheets That Contain: ", _
ThisWorkbook.ActiveSheet.Name, , , , , 2)
TextWildcard = " * " & TextToFind & " * "
Application.DisplayAlerts = False
'loop through sheets and delete each sheet that contains text
i = 0
For Each Ws In ThisWorkbook.Sheets
If Ws.Name Like TextWildcard Then
Ws.Delete
i = i + 1
End If
Next Ws
Application.DisplayAlerts = True
End Sub
当您运行此特定宏时,将出现一个输入框,您可以在其中输入特定的文本字符串。
按 Enter 键后,Excel 工作簿中包含该特定文本的每个工作表将被自动删除。
注意: Application.DisplayAlerts=False行告诉 VBA 不要显示删除工作表的过程,这会加快其执行速度。
以下示例展示了如何在实践中使用此语法。
示例:使用VBA删除包含特定文本的工作表
假设我们有以下包含四个工作表的 Excel 工作簿:
现在假设我们要删除工作表名称中包含“Team”的每个工作表。
我们可以创建以下宏来执行此操作:
SubDeleteSheets ()
Dim TextToFind As String
Dim TextWildcard As String
Dim Ws As Worksheet
Dim i As Integer
'prompt user for text to search for in sheet names
TextToFind = Application.InputBox(" Delete Sheets That Contain: ", _
ThisWorkbook.ActiveSheet.Name, , , , , 2)
TextWildcard = " * " & TextToFind & " * "
Application.DisplayAlerts = False
'loop through sheets and delete each sheet that contains text
i = 0
For Each Ws In ThisWorkbook.Sheets
If Ws.Name Like TextWildcard Then
Ws.Delete
i = i + 1
End If
Next Ws
Application.DisplayAlerts = True
End Sub
当我们运行这个宏时,会出现一个输入框,我们可以在其中输入要在工作表名称中搜索的文本:
一旦我们输入“Team”并按OK ,名称中任何位置包含“Team”的工作表名称将被自动删除:
请注意,工作表名称中带有“Team”的两个工作表已被删除。
任何不包含“团队”的工作表都保持不变。
其他资源
以下教程说明如何在 VBA 中执行其他常见任务: