Excel工作表更名非常简单,即使是办公小白也知道如何操作,有些应用场景中不希望用户修改工作表名称,使用VBA是否可以实现这个需求呢?
非常不幸的是,Excel中并没有提供工作表更名的相关事件接口,也就是说工作表更名操作没有类似于Worksheet_Change的事件,用户修改工作表名称时并没有激活某个Excel已经提供的事件。但是Excel已经提供了那么多个系统事件,肯定可以“通融”一下。
示例代码如下。
' Thisworkbook module
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sheets(1).Name <> "Main" Then Sheets(1).Name = "Main"
End Sub
【代码解析】
用户切换工作表操作时,将触发此事件过程,如果第一个工作表的名称被修改了(不是默认名称Main),那么将会被自动恢复。
操作效果如下图所示。
这个解决方案无法在如下场景中发挥作用:
- 工作簿中只有单个工作表
- 用户修改工作表名称后,并没有切换工作表