Excel VBA如何仅隐藏与当前显示的用户窗体关联的工作表
问题原因
原有代码中Application.Visible = False是对整个Excel应用程序实例生效,会隐藏该实例下所有打开的工作簿,所以会出现所有正在处理的工作表都被隐藏的问题。
可行实现代码
你可以通过隐藏当前用户窗体所属工作簿的窗口,而非整个Excel应用,来实现需求,代码如下:
Private Sub Workbook_Open() ' 仅隐藏当前工作簿窗口,不影响其他打开的Excel文件 ThisWorkbook.Windows(1).Visible = False Calculator.Show End Sub
如果需要在关闭用户窗体时恢复显示当前工作簿,可以在用户窗体的QueryClose事件中添加如下代码:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) ' 关闭窗体时恢复当前工作簿的显示 ThisWorkbook.Windows(1).Visible = True End Sub
补充说明
- 如果你需要的是仅隐藏当前工作簿内的特定工作表,而非整个工作簿窗口,可以使用对应代码调整工作表可见性:
' 普通隐藏,用户可在Excel界面手动取消隐藏 ThisWorkbook.Sheets("需要隐藏的工作表名称").Visible = xlSheetHidden ' 深度隐藏,用户无法在Excel界面手动取消隐藏,仅能通过VBA修改状态 ThisWorkbook.Sheets("需要隐藏的工作表名称").Visible = xlSheetVeryHidden - 调整工作表可见性时,需要保证工作簿内至少保留1个可见工作表,否则会触发运行错误。
内容的提问来源于stack exchange,提问作者Osama Ali
相关产品推荐
相关产品推荐

