隐藏选定的工作表而不用for循环

时间:2016-07-20 18:31:23

标签: excel vba excel-vba

我想一次隐藏一些工作表,而不使用for循环。原因是大量的工作表,所以我的宏工作了一段时间。

您有什么想法如何改善此宏的运行时间?

2 个答案:

答案 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