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

39 篇文章 0 订阅
20 篇文章 2 订阅

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

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

对于第一个目的,其实也更好的解决方法,用户无法在Excel界面中修改工作表的CodeName,所以在VBA代码中使用CodeName就可以避免由于工作表名称修改导致的代码错误。例如示例文件中,工作表Summary的CodeName为Sheet1,无论将工作表名称修改任何字符,其CodeName都是不变的。
在这里插入图片描述
对于第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
在这里插入图片描述
虽然不是完美解决方案,但是应该可以满足多数应用场景的需求,如果大家有更好的解决方法,欢迎评论留言。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值