【问题标题】:Hiding WorkSheets Programmatically in Excel在 Excel 中以编程方式隐藏工作表
【发布时间】:2013-11-30 04:06:46
【问题描述】:

我试图在关闭 Excel 时隐藏工作簿中的所有工作表。我正在使用的代码隐藏所有工作表,直到它到达最后一张。然后它给了我一个运行时错误'1004'Method'Visible'of'Object'_Worksheet failed。我想我可能需要很多张,所以我删除了大部分,除了更少的张之外没有任何变化。这是我尝试使用的代码。我把它放在“ThisWorkbook”中。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim sh As Worksheet


For Each sh In Sheets
    If StrComp(sh.Name, C_INTRO_SHEETNAME, vbTextCompare) = 0 Then
        sh.Visible = xlSheetVisible
    Else
        sh.Visible = xlSheetVeryHidden
    End If
Next sh

ActiveWorkbook.Sheets("Welcome").Visible = True
SaveState

End Sub

我正在使用ActiveWorkbook.Sheets("Welcome").Visible = True 来取消隐藏解释如何启用宏的欢迎表,然后我将其保存,因此当它打开时,我只看到欢迎表。当它打开时,我使用此代码取消隐藏工作表并隐藏欢迎表。

Private Sub Workbook_Open()
Dim sh As Worksheet

For Each sh In Sheets
    sh.Visible = True
Next sh

ActiveWorkbook.Sheets("Welcome").Visible = xlSheetVeryHidden
Worksheets("Service").Protect UserInterfaceOnly:=True
Worksheets("Service").Activate

End Sub

希望这会在他们启用宏后发生,否则无需取消隐藏其他工作表。

【问题讨论】:

  • 隐藏所有工作表除了欢迎表。 Excel 始终要求工作簿中至少有一个工作表可见。
  • 我根据您的建议更改了代码并且它有效。将其发布为答案,我会接受。谢谢 rdhs!

标签: excel vba


【解决方案1】:

感谢 rdhs 的帮助。如果您发布答案,我会接受。这是我的最终代码更改。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim sh As Worksheet

Application.ScreenUpdating = False
'' If it is the Welcome sheet then make it visible, else hide it.
For Each sh In Sheets
    If StrComp(sh.Name, INTRO_SHEETNAME, vbTextCompare) = 0 Then
            sh.Visible = xlSheetVisible
    Else
        sh.Visible = xlSheetVeryHidden
    End If
Next sh
'' Call subroutine to save changes.
SaveState

End Sub

Private Sub Workbook_Open()
Dim sh As Worksheet

Application.ScreenUpdating = False
'' Make all the sheets visible.
For Each sh In Sheets
    sh.Visible = True
Next sh
'' Hide the welcome sheet.
ActiveWorkbook.Sheets("Welcome").Visible = xlSheetVeryHidden
Worksheets("Service").Protect UserInterfaceOnly:=True
Application.ScreenUpdating = True
Worksheets("Service").Activate

End Sub

放置在“ThisWorkbook”中的代码将在打开和关闭工作簿时调用。

【讨论】:

    猜你喜欢
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多