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

Anu*_*ngh 4 excel vba excel-vba

我有一个包含大量工作表和数据透视表的工作簿.带有数据透视表的所有工作表在工作表名称中都有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
Run Code Online (Sandbox Code Playgroud)

Tmd*_*ean 7

想想你正在写的条件.

If Not ws.Name Like "Control" Or ws.Name Like "*Pvt Tbl" 
Run Code Online (Sandbox Code Playgroud)

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

听起来你想要的条件是:

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

If Not ws.Name Like "Control" And Not ws.Name Like "*Pvt Tbl"
Run Code Online (Sandbox Code Playgroud)

人们很容易忘记,计算机总能完全按照你的要求去做.

这是通过应用De Morgan定律可能更清楚的条件之一.可能更容易理解的逻辑等效条件是:

If Not (ws.Name Like "Control" Or ws.Name Like "*Pvt Tbl")
Run Code Online (Sandbox Code Playgroud)