【问题标题】:Unhide sheets names using VBA whose name contain specific word使用名称包含特定单词的 VBA 取消隐藏工作表名称
【发布时间】:2018-09-20 20:35:21
【问题描述】:

使用下面的代码,我可以选择所有包含单词“ba”的工作表但是,如果这些工作表/选项卡被隐藏,我不能,我得到一个“运行时错误'1004 ':" 警告。

有什么建议可以让这个代码与隐藏的工作表/标签一起工作吗?所以它显示所有带有“ba”的工作表/选项卡名称,即使它被隐藏了?如果它们被隐藏,我希望它们出现或 .Visible = True

Sub listray()
Dim ws As Worksheet, flg As Boolean
For Each ws In Sheets
If LCase(ws.Name) Like "*ba*" Then
    ws.Select Not flg
    flg = True
End If
Next
End Sub
End Sub

【问题讨论】:

  • 为什么需要Select工作表?
  • 通过选择,我已取消隐藏名称中包含某些文本的工作表。
  • 您无需Select 工作表即可隐藏/取消隐藏它。

标签: excel vba google-sheets tabs hidden


【解决方案1】:

工作表必须可见才能被选中。

If LCase(ws.Name) Like "*ba*" Then
    ws.Visible = xlSheetVisible
    ws.Select Not flg
    flg = True
End If

【讨论】:

    【解决方案2】:

    您无需Select 工作表即可隐藏/取消隐藏它。这将在工作表中循环,并且只留下名称为 Like "*ba*" 的工作表可见

    Sub listray()
    
    Dim ws As Worksheet
    
    Application.ScreenUpdating = False
        For Each ws In Sheets
            ws.Visible = LCase(ws.Name) Like "*ba*"
        Next
    Application.ScreenUpdating = True
    
    End Sub
    

    【讨论】:

    • 如果只需要取消隐藏,这也是有效的。目前尚不清楚选择工作表后是否有后续行动,并且 OP 对您的问题的答复并没有真正使它变得不那么未知。根据评论回复说选择只是为了执行取消隐藏,我给这个答案一个赞成票。
    • 是的,这就是我提出这个答案的依据。如果它不符合 OP 的需要,并且布尔标志用于其他用途,那么这可能对未来的读者有用:p
    猜你喜欢
    • 2018-02-02
    • 2019-06-07
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多