创build一个可重用的macros来closures在Excel中的活动工作表?
我想在Excel中创build一个macros,我可以在任何工作表上重新使用它来closures工作表并将用户引导回“主页”工作表。
我在想这样的事情? 但是我在第三行得到一个错误。
Sub CloseCurrentTab() ' CloseCurrentTab Macro Dim strCurrentSheet As String strCurrentSheet = ActiveSheet.Name Sheets("strCurrentSheet").Visible = False Sheets("Home").Activate End Sub
我从你的问题中假设你想创build一种隐藏除活动表单之外的全部导航。
如果这是你正在寻找的,你需要像下面的代码:
在一个模块中:
全局常量cStrHomeSheet As String =“Home” Public Sub subGotoSheet(strSheetName As String) 在错误转到ErrorHandler 昏暗的wsActive作为工作表 Application.ScreenUpdating = False 设置wsActive = ActiveSheet 表(strSheetName).Visible = xlSheetVisible 表(strSheetName).Activate wsActive.Visible = xlSheetVeryHidden Application.ScreenUpdating = True 退出小组 的ErrorHandler: MsgBox“找不到工作表”&strSheetName 结束小组 Public Sub subGotoHomeSheet() subGotoSheet cStrHomeSheet 结束小组 Public Sub subGotoSheetFromCaller() subGotoSheet Application.Caller 结束小组 Public Sub subHideAll() 昏暗的ws作为工作表 Application.ScreenUpdating = False ActiveWindow.DisplayWorkbookTabs = False 表(cStrHomeSheet).Visible = xlSheetVisible 表(cStrHomeSheet).Activate 对于每个ws在表中 如果ws.Name cStrHomeSheet那么_ ws.Visible = xlSheetVeryHidden 下一个 Application.ScreenUpdating = True 结束小组 Public Sub subShowAll() 昏暗的ws作为工作表 Application.ScreenUpdating = False ActiveWindow.DisplayWorkbookTabs = True 对于每个ws在表中 ws.Visible = xlSheetVisible 下一个 Application.ScreenUpdating = True 结束小组
另外,将下面的代码放在ThisModule
模块中:
Private Sub Workbook_Open() subHideAll 结束小组
说明和用法:
ThisWorkbook
模块中的代码将隐藏除加载工作簿之外的所有工作表。 (要隐藏切换工作表的事实,它也会隐藏窗口左下方的工作表标签栏)。
通过调用subGotoSheet "DestinationSheet"
您现在可以“激活”,即取消隐藏目标工作表 – 旧工作表将被隐藏。 为了让你的生活更轻松,你也可以调用subGotoHomeSheet
– 更重要的是,使用subGotoSheetFromCaller
。 如果将它与button(或任何形状的事物)结合起来,这个实际上是非常整洁的:如果将一个button或形状插入到工作表中,则将该macros指定给它。 您现在只需要根据您的目标工作表命名该项目(使用公式字段左边的名称框) – 并且该button将自动将您指定到所需的工作表!
最后但并非最不重要的一点,我假设你还需要一个“开发人员模式”,在这个模式下你可以看到并编辑所有的表格。 为此,运行subShowAll
,返回,运行subHideAll
。 我build议你为两个macros分配快捷键,这样你就可以在开发者和用户模式之间快速切换。
为了让它编译更改第3行到:
Sheets(strCurrentSheet).Visible = False
但是,这只是隐藏表; 它不会删除它。 要删除它(永久)使用:
Sheets(strCurrentSheet).Delete