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

6

我有一个工作簿,里面有很多工作表和数据透视表。所有带有数据透视表的工作表名称中都有“Pvt Tbl”。现在,我想清除除了带有数据透视表和控制表(在该表中有所有运营按钮)的所有工作表中的数据。我已经编写了以下代码,但似乎没有起作用。我还想让“控制”工作表仅可见,其他工作表应该隐藏。我正在使用“Like语句”进行通配符搜索工作表名称中的内容,如“*Pvt Tbl”,但它仍会删除所有工作表中的数据透视表。感谢任何帮助!预先感谢!!

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个回答

9

考虑你所编写的条件。

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"

很容易忘记,计算机总是按照你告诉它们的方式去做。

这是应用德摩根定律可能更清晰的条件之一。一个逻辑等价的条件,可能更容易理解:

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

完美运行!谢谢你的帮助! - Anurag Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接