Excel VBA - 工作表名称通配符搜索

时间:2015-03-26 18:08:23

标签: vba excel-vba excel

我有一张包含大量工作表和数据透视表的工作簿。带有数据透视表的所有工作表在工作表名称中都有Pvt Tbl。现在我想要清除所有工作表中的数据,除了带有数据透视表和控制表的工作表(我有我所有的操作按钮)我到目前为止有以下代码,但它似乎没有工作。我还想让“控制”表只能看到,其余的表应该被隐藏。我正在使用带有“* Pvt Tbl”的Like语句在工作表名称中进行外卡搜索,但它仍然删除所有工作表中的数据透视表。任何帮助表示赞赏。在此先感谢!!

Sub ClearData()

Application.ScreenUpdating = False

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
    If Not ws.Name Like "Control" Or ws.Name Like "*Pvt Tbl" Then ws.Cells.Delete: ws.Cells.Delete
    If Not ws.Name Like "Control" Then ws.Visible = False
Next

Application.ScreenUpdating = True

End Sub

1 个答案:

答案 0 :(得分:7)

想想你正在写的条件。

If Not ws.Name Like "Control" Or ws.Name Like "*Pvt Tbl" 

如果名称不是Control或名称以“Pvt Tbl”结尾,...

听起来你想要的条件是:

如果名称不是Control并且名称不以“Pvt Tbl”结尾,...

If Not ws.Name Like "Control" And Not ws.Name Like "*Pvt Tbl"

很容易忘记计算机将始终完全按照您的要求进行操作。

这是通过应用De Morgan's laws可能更清楚的条件之一。可能更容易理解的逻辑等效条件是:

If Not (ws.Name Like "Control" Or ws.Name Like "*Pvt Tbl")