我正在做一个项目,希望所有用户都启用宏。这是一个共享工作表,因此我无法简单地将所有内容隐藏为基线,然后在运行 Open_Workbook 时取消隐藏工作表。我的目标是在禁用宏时仅显示我指定的“空白”工作表。
使用工作簿的“浏览器视图”功能,我可以使其仅在浏览器或团队中打开“空白”表,我想在这里执行此操作,但检查是否启用了宏,或者可以通过启用宏来打开的默认状态。
如果某人未启用宏,则完全阻止其使用工作表的方法也是可行的。任何想法都将不胜感激。
答案1
您可以通过将“空白”以外的其他工作表设置为“非常隐藏”来实现此技巧。
工作表有三个“可见”属性:
- xlSheetVisible(或 TRUE)- 工作表可见
- xlSheetHidden(或 FALSE)- 工作表已隐藏
- xlSheetVeryHidden - 工作表非常隐藏
可以使用 Excel 可视化界面的“取消隐藏”或“隐藏”命令在“可见”和“隐藏”状态之间切换。但是,只有 Visual Basic 宏可以设置或取消设置该
xlVeryHidden
值,也可以从 VBA 编辑器中手动完成。
如何使工作表隐藏起来
工作簿必须以格式存储.xlsm
,然后执行以下操作:
- 按Alt+F11 或单击开发人员选项卡中的 Visual Basic 按钮以打开 Visual Basic 编辑器。您将在左上角面板中看到项目资源管理器窗口。
- 按下F4或单击视图 > 属性打开下面的属性窗口(如果尚未打开)
- 在项目资源管理器窗口中,单击以选择要隐藏的工作表
- 在属性窗口中,将 Visible 属性设置为“2 - xlSheetVeryHidden”。
就是这样:保存并关闭工作簿。隐藏的工作表现在将完全隐藏。
显示非常隐藏的工作表
要取消隐藏非常隐藏的工作表需要一个 VBA 宏,这样当宏被禁用时它们将保持隐藏状态。
此宏将取消隐藏所有工作表:
Sub UnhideVeryHiddenSheets()
Dim wks As Worksheet
For Each wks In Worksheets
If wks.Visible = xlSheetVeryHidden Then
wks.Visible = xlSheetVisible
Next
End Sub
该宏还可以使用如下代码行将空白工作表设置为隐藏:
Sheets("BLANK").Visible = False
要创建一个在工作簿打开时自动执行此操作的宏,请参阅 Microsoft 文章
打开工作簿时自动运行宏。
参考 :