如何禁止修改Excel工作表名称

经常会有网友提问:如何实现禁止修改Excel工作表名称,这个暂时没有完美解决方案,但是如下变通解决方法基本上可以满足需求。
示例文件中有两个工作表,名称为Summary和Sheet2,假设禁止修改第一个工作表名称。
修改Excel工作表名称时,涉及跨表引用公式中的工作表名称会自动更新,无需大家操心,所以固定工作表名称一般是两个目的:

  1. 便于在VBA中引用工作表对象
  2. 表格文件更加规范化

对于第一个目的,其实也更好的解决方法,用户无法在Excel界面中修改工作表的CodeName,所以在VBA代码中使用CodeName就可以避免由于工作表名称修改导致的代码错误。例如示例文件中,工作表Summary的CodeName为Sheet1,无论将工作表名称修改任何字符,其CodeName都是不变的。
《如何禁止修改Excel工作表名称》
对于第2目的,可以使用事件代码来基本实现,为什么开篇说没有完美解决方案呢?其原因就在这里,如果用户打开文件时没有启用宏,那么所有代码都是无效的,也就无法禁止修改工作表名称了。
在Summary工作表中添加如下两个事件代码。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Sheet1.Name <> "Summary" Then Sheet1.Name = "Summary"
End Sub

Private Sub Worksheet_Deactivate()
    If Sheet1.Name <> "Summary" Then Sheet1.Name = "Summary"
End Sub

将第一个工作表名称修改为123,激活第二工作表(触发Worksheet_Deactivate事件)或者在第一个工作表中选中其他单元格(非当前活动单元格,触发Worksheet_SelectionChange事件),那么第一个工作表名称将自动恢复为Summary
《如何禁止修改Excel工作表名称》
虽然不是完美解决方案,但是应该可以满足多数应用场景的需求,如果大家有更好的解决方法,欢迎评论留言。

    原文作者:taller_2000
    原文地址: https://blog.csdn.net/taller_2000/article/details/114225268
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞