我想一次隐藏一些工作表,而不使用for循环。原因是大量的工作表,所以我的宏工作了一段时间。
您有什么想法如何改善此宏的运行时间?
答案 0 :(得分:4)
您只需录制选择第一张纸的宏,然后使用Shift选择最后一张纸。然后右键单击并隐藏。
Sheets(Array("Sheet2", "Sheet3", "Sheet4")).Visible = False
或按索引
Sheets([{2, 3, 4}]).Visible = False
请注意,您不能取消一次隐藏多个工作表。
<小时/> 要添加所有工作表可见的自定义视图:
For Each ws In Sheets
ws.Visible = True
Next
ActiveWorkbook.CustomViews.Add "All" ' you can change the name
然后,取消隐藏所有工作表:
ActiveWorkbook.CustomViews("All").Show
<小时/> 要更快地取消隐藏工作表,您可以尝试禁用某些事件和计算:
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
For Each ws In Sheets: ws.Visible = True: Next
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
答案 1 :(得分:0)
Sub HideSheets()
Dim sSheets() As String
sSheets = Split("Sheet1,Sheet2,Sheet3", ",")
Worksheets(sSheets).Visible = xlHidden
End Sub