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 中执行其他常见任务:

VBA:如何计算工作簿中的工作表数量
VBA:如何从另一个工作簿中提取数据
VBA:如何插入多行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注