隐藏工作表基于其名称的结尾部分 - VBA

时间:2017-04-26 22:47:21

标签: excel vba excel-vba

我的工作簿里面有大量的工作表。我只需要制作名为" Main"的工作表。以" _Summary"结尾的标签和标签。

[注意摘要前的下划线]

在进入困难部分之前,我尝试了一个基本逻辑,只是为了隐藏主工作表和另一个名为Monthly_Summary的工作表。我可以为这个逻辑完成它,但是如何概括它来检查它以_Summary结尾的表格。这是守则,

Sub tabopen()

Application.ScreenUpdating = False

Dim ws As Worksheet

    For i = 1 To Worksheets.Count

                Workseetname = Worksheets(i).Name

                If (Workseetname = "Main" Or Workseetname = "Monthly_Summary") Then
                    Sheets(Workseetname).Visible = True
                Else
                    Sheets(Workseetname).Visible = False
                End If
    Next i


Application.ScreenUpdating = True

End Sub

请建议并分享您的想法。提前谢谢。

3 个答案:

答案 0 :(得分:4)

隐藏“Main”和“* _Summary”工作表:

Sub tabopen()
    Application.ScreenUpdating = False
    Dim i As Long
    For i = 1 To Worksheets.Count    
        Worksheets(i).Visible = Not (Worksheets(i).Name = "Main" Or _
                                     Worksheets(i).Name Like "*_Summary")
    Next i
    Application.ScreenUpdating = True
End Sub

答案 1 :(得分:1)

逻辑部分并不完全正确。这是一个易于逐步完成的版本:

Sub tabopen()
    Dim Worksheetname As String, i As Integer, shouldBeVisible As Boolean
    For i = 1 To Worksheets.Count
        Worksheetname = Worksheets(i).Name
        shouldBeVisible = Worksheets(i).Name = "Main" Or Right(Worksheets(i).Name, 8) = "_Summary"
        Sheets(Worksheetname).Visible = shouldBeVisible
    Next i
End Sub

答案 2 :(得分:1)

如果你已经做了很多很多工作表删除和创建新工作表(特别是如果有图表作为新工作表),我不相信索引通过工作表,因为它是一个集合。 我在2002年试图引用工作表(i).Name时遇到了Excel崩溃的问题。 Excel根本无法找到索引 我知道Excel从那以后发生了变化 无论哪种方式,这是迭代工作表的“更安全”方式:

Sub mySub()
    Dim Sh1 As Worksheet    
    For Each Sh1 In ThisWorkbook.Sheets
        Sh1.Visible = Not (Sh1.Name = "Main" Or Sh1.Name Like "*_Summary")
    Next
End Sub