vba - 如何更改 Excel VBA 项目中的全局变量名称?
问题描述
如果在以前的开发人员离开公司后有人必须继续处理 Excel VBA 项目/模块,他们如何安全地更改全局变量名?
如果这些全局变量名称具有误导性、拼写错误、看起来像另一个变量、不遵循所选约定等,则可能会出现问题。
使用搜索/替换来更改它们是一个问题,因为有时它是出现在评论中的一个词。
通过复制/粘贴来更改它们是一个问题,因为它很长并且您可能会错过一些,特别是如果出现很多情况或者如果您将其更改为类似的东西。
有没有办法通过 Excel“IDE”或其他工具安全地做到这一点?
解决方案
您需要在此处进行的操作称为重构——您需要对代码进行可能危险的更改,同时不影响其行为。做错了,代码就会中断!
重命名在一个或多个地方使用的标识符是一种重命名重构。
大多数现代 IDE 都具有这样的功能(以及其他一些重构)。然而,在 Visual Studio 成为它从那时起成为全功能工具之前,VBE 就处于其辉煌的顶峰 - 哎呀,VBE是1998 年的 Visual Studio (6.0)!
所以你真的有两个选择:
- 手动进行重构- IDE 的搜索和替换功能 (Ctrl+H) 在这里可能很危险,因为它将代码视为简单文本,没有语义理解:您需要单独查看每一个出现的事件,或者冒着重命名不是的标识符的风险指您要重命名的变量。
- 使用第 3 方工具- 除了我自 2014 年 10 月以来管理的开源Rubberduck项目之外,我不知道有任何 VBIDE 插件能够深入理解代码以允许安全地重构 VBA 代码)。这个插件解析你的整个项目,构建一个符号表,让你导航,是的,重构/重命名任何标识符,自动更新所有调用站点。
请注意,Rubberduck 是一个非常活跃的开源项目,并且在不断改进。解析 VBA很难,让 VBE 在功能上与现代 IDE 相提并论不是一件小事,也不是一件容易的事……但它很有趣,是的,它可以工作。
推荐阅读
- linux - 无法连接 ssh sh: 6000: command not found
- html - 谷歌地方图书馆未定义
- java - 以编程方式修改 Xtext 生成的 Mwe2 工作流
- knockout.js - Magento2 在 Minicart 上调用静态图像
- java - SpringBootApplication 不会自动装配我的服务
- python - 条形图月份与其累积值的对比
- python-3.x - 用Python擦除关键字定义范围内的一些文件行
- java - 如何从 2 个数组中获取每个值的差异
- python - scipy.optimize.minimize 相同(?)输入的两个不同输出
- javascript - 反应原生 - 在 for 循环中一个接一个地打开多个模式