在Excel工作表标签上双击可以修改名称,如果其他工作簿中公式使用了对于此工作表的外部引用,那么工作表名称变化后,这些外部引用经失效,在VBA代码中通过工作表名称引用对象也将出错。利用VBA对象事件代码可以一定程度上的实现防止Excel工作表名称被修改。

假设实例文件中的工作表名称为“DEMO”,在该工作表模块中增加如下事件代码。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Me.Name <> "DEMO" Then Me.Name = "DEMO"
End Sub
Private Sub Worksheet_Deactivate()If Me.Name <> "DEMO" Then Me.Name = "DEMO"
End Sub

【代码解析】
第1~3行代码为工作表的SelectionChange事件代码,用户在工作表中选中单元格或者区域时,将激活此事件执行相关代码。
第2行代码判断该工作表的名称是否被修改,如果已经被修改,将自动恢复为“DEMO”,其中的Me用于指代代码模块所在对象,此处就是名称为“DEMO”的工作表。
如果用户修改了工作表名称之后,直接切换工作表,那么并不会激活SelectionChange事件,针对此场景需要在Deactivate事件中添加同样的代码用于恢复工作表名称。


使用了两个工作表事件是否将完美解决这个问题呢?其实并不是,如果用户修改了工作表名称之后,直接保存并关闭工作簿文件,那么该工作表的名称应不再是“DEMO”。为了应对此场景,需要使用工作簿的事件代码。

Private Sub Workbook_BeforeClose(Cancel As Boolean)If shtDEMO.Name <> "DEMO" ThenshtDEMO.Name = "DEMO"ThisWorkbook.SaveEnd If
End Sub

【代码解析】
工作簿事件代码保存在ThisWorkbook模块中, 就无法像上面两个工作表事件代码一样直接使用Me.Name获取工作表名称。此处可以使用工作表的CodeName作为工作表对象的标识,此例中名称为“DEMO”的工作表的CodeNameshtDEMO,如下图所示。

第3行代码恢复工作表名称。
第4行代码保存文件。


本文所讲解的方法只是“基本上”实现了防止Excel工作表名称被修改,并不能确保时候所有场景。如果希望完美的实现禁止工作表改名,应该使用“保护工作簿”的功能,工作表的重命名功能被禁用,但是需要注意的是工作表相关一些其他操作也同时被禁用,如下图所示。

如何防止Excel工作表名称被修改相关推荐

  1. vba 修改access表的链接地址_神奇的VBA编程:禁止修改Excel工作表名称

    职场中经常需要将做好的Excel表格/模板发给他人或者存放在公共路径上共享使用,此时需要禁止别人更改已经设定好的工作表名称.或者某些工作簿中有公式使用了对某些工作表的外部引用,如果工作表名称发生变化, ...

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

    经常会有网友提问:如何实现禁止修改Excel工作表名称,这个暂时没有完美解决方案,但是如下变通解决方法基本上可以满足需求. 示例文件中有两个工作表,名称为Summary和Sheet2,假设禁止修改第一 ...

  3. Excel实用技巧-如何批量提取excel工作表名称

    Excel实用技巧-如何批量提取excel工作表名称 1. 打开Excel文件,点击"公式"栏,进而点击"定义管理器" 2. 在弹出的对话框中,点击新增按钮, ...

  4. 修改Excel工作表名称(CodeName)并不简单

    在Excel中修改工作表名称有什么可讲的,在工作表标签上点右键,选择重命名就可以了,恭喜你答对了一半. 另一半呢?除了这个名称外,工作表还有另外一个名称--CodeName,想修改这个名字就没那么简单 ...

  5. python获取excel工作表名称

    你可以使用 Python 的 openpyxl 库来获取 Excel 的工作表名称.具体的方法是: 安装 openpyxl 库:在命令行中输入 pip install openpyxl 在 Pytho ...

  6. 获取excel名称java_使用Apache POI获取大型Excel文件的Excel工作表名称

    小编典典 为了显示@Gagravarr的评论可能意味着什么: 该XSSFReader包含方法XSSFReader.getSheetsData其中"返回一个迭代器,这将让你在把所有的不同的表, ...

  7. Excel酷炫技能,批量修改工作表名称,让你的工作事半功倍

    企事业单位部门众多,人员也众多.使用Microsoft Excel汇集资料任务繁重,收集到的Excel工作表资料名称也各不相同,如果不将其整理会对今后的工作造成不必要的麻烦.对Excel工作表名称单个 ...

  8. Excel如何批量修改工作表名称

    今天跟大家分享一下Excel如何批量修改工作表名称 1.下图工作簿中含有多个工作表,现在我们想要将工作表名称批量修改为1月-9月. 2.首先我们现在表格空白区域录入1月-9月 3.点击下图选项(Exc ...

  9. Excel单元格中引用当前工作表名称

    有多份Excel表格表头标题都为"××学校第1次拉练考试××班成绩表",由于工作表结构都是一样的,所以我每次都是复制工作表然后编辑修改表中的数据.但经常是表中数据修改了,表头标题中 ...

最新文章

  1. 帝豪gs车机系统wince_吉利新款帝豪GS,内饰升级大双屏,还不涨价,7万多就能买...
  2. 设计模式04_抽象工厂模式
  3. BIO bi_sector submit_bio make_request_fn
  4. 【C++】39. std::ofstream把程序中的中的变量值存储到文件中
  5. ACM入门之【高精度】
  6. SAP Spartacus CurrentProductService.getProduct方法的实现原理
  7. 基础算法 —— 高精度计算 —— 高精度减法
  8. 你还没听过 CynosDB 吗?不来这场数据库技术沙龙就要 OUT 了!
  9. 遇到相同流程时,(在流程比较复杂时)「【充分利用】 在【 之前的 作业过程中 做成的(留下的) 资源】」 ~
  10. PX4无人机配置4G空地多机组网系统
  11. 手把手教你SpringBoot+MyBatis+Shiro 搭建项目框架
  12. html修改鼠标手势,css设置鼠标手势的方法
  13. 《仿人机器人原理与实战》一1.2 反射弧与仿人机器人设计
  14. Oracle转换Postgres
  15. 分段插值法 | 分段线性插值 + 分段抛物插值
  16. ico 图标 生成 工具 网站
  17. 云控系统都有那些功能?
  18. Mac查看端口号占用
  19. 常用的但是容易忘记的css样式..........持续更新,主要自用
  20. python七夕表白代码(转载)

热门文章

  1. 字典学习/稀疏表示学习笔记
  2. 点名器实现的随机原理(实现随机点名器)
  3. springboot热部署该怎么实现?springboot热部署实现方式
  4. 普通素数 筛法求素数 二次筛法求素数 MillerRabin素数测试【模板】
  5. npm全局安装和本地安装及卸载
  6. 详解数据仓库建设体系
  7. AI大模型加持,生成式搜索来了!
  8. grabcut图像分割的原理简单介绍
  9. 整理全网文档管理平台,持续跟更新
  10. Tecohoo VD-182U 全高清视频会议摄像机