我的工作簿里面有大量的工作表。我只需要制作名为" 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
请建议并分享您的想法。提前谢谢。
答案 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