在Excel VBA中隐藏非活动的工作表

我在Excel 2013中有一个UserForm,在操作之前清理用户的Excel页面。 公共模块具有以下VBA代码:

Sub ShowForm() With ActiveWorkbook .Worksheets("Sheet1").Activate .Worksheets("Sheet2").Visible = False 'Hide didn't work .Worksheets("Sheet3").Visible = False 'Hide didn't work End With UserForm1.Show End Sub 

我怎样才能隐藏工作表2和3,并激活或使工作表1可见? 代码应该模仿右键单击选项卡并select“隐藏”。 上面的代码会引发Run-time error '9': Subscript out of range

看起来像隐藏除活动工作表之外的所有内容。 试试这个代码 – 它不依赖于表名。

 Sub Test() SheetVisibility 'Hide all except active sheet. MsgBox "All except `" & ActiveSheet.Name & "` hidden." SheetVisibility True 'Unhide all sheets. End Sub Sub SheetVisibility(Optional ShowAll As Boolean = False) Dim wrkSht As Worksheet For Each wrkSht In ThisWorkbook.Worksheets If wrkSht.Name <> ActiveSheet.Name Then wrkSht.Visible = IIf(ShowAll, xlSheetVisible, xlSheetHidden) End If Next wrkSht End Sub