【问题标题】:Excel VBA - Sheet Name Wild Card SearchExcel VBA - 工作表名称通配符搜索
【发布时间】:2015-03-26 18:08:22
【问题描述】:

我有一个包含很多工作表和数据透视表的工作簿。所有带有数据透视表的工作表的工作表名称中都有 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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    想想你写的条件。

    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")
    

    【讨论】:

    • 完美运行!!谢谢你的帮助!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    相关资源
    最近更新 更多