如何使用VBA隐藏工作簿中非活动工作表的标题?
解决Excel中隐藏非活动工作表标题的问题
你踩了个典型的小坑——DisplayHeadings是窗口对象的属性,不是单个工作表的属性!也就是说,同一个Excel窗口里的所有工作表共享这个显示设置,所以直接用工作表名称替换ActiveWindow肯定行不通。
要实现“仅活动工作表显示标题,非活动工作表隐藏”的效果,得借助工作表的激活/失活事件来动态切换设置,具体步骤如下:
- 打开VBA编辑器(按下
Alt+F11快捷键),在左侧项目窗格找到你的工作簿,双击ThisWorkbook对象。 - 在代码窗口的顶部下拉菜单中,先选择
Workbook,再选择SheetActivate事件,然后输入以下代码:Private Sub Workbook_SheetActivate(ByVal Sh As Object) ' 当工作表被激活时,显示行/列标题 ActiveWindow.DisplayHeadings = True End Sub - 同样在顶部下拉菜单中,选择
SheetDeactivate事件,输入这段代码:Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) ' 当工作表被切换出去(非活动状态)时,隐藏行/列标题 ActiveWindow.DisplayHeadings = False End Sub
这样设置后,每次你切换工作表时:
- 刚激活的工作表会自动显示行/列标题
- 之前的活动工作表(现在非活动)会自动隐藏标题
另外,如果希望打开工作簿时就默认符合这个规则,可以再加一个Workbook_Open事件:
Private Sub Workbook_Open() ' 打开工作簿时,确保当前激活的工作表显示标题 ActiveWindow.DisplayHeadings = True End Sub
内容的提问来源于stack exchange,提问作者Leedo




