vba - 如何更改 Excel VBA 项目中的全局变量名称?

标签 vba excel global-variables

如果在前任开发人员离开公司后有人必须继续处理 Excel VBA 项目/模块,他们如何安全地更改全局变量名称

如果这些全局变量名称具有误导性、拼写错误、看起来像另一个变量、不遵循所选约定等,则可能会出现问题。

使用搜索/替换来更改它们是一个问题,因为有时它是出现在注释中的单词。

通过复制/粘贴来更改它们是一个问题,因为它很长,您可能会错过一些,特别是如果出现很多次或者将其更改为类似的内容。

有没有办法通过 Excel“IDE”或其他工具安全地执行此操作?

最佳答案

这里您需要做的称为重构 - 您需要对代码进行可能危险的更改,而不影响其行为。做错了代码就会崩溃!

重命名在一个或多个地方使用的标识符是一种重命名重构。

大多数现代 IDE 都有这样的功能(以及其他一些重构)。然而,早在 Visual Studio 成为功能齐全的工具之前,VBE 就已达到其辉煌的顶峰 - 哎呀,1998 年的 VBE Visual Studio (6.0)!

所以你确实有两个选择:

  • 手动进行重构 - IDE 的搜索和替换功能 (Ctrl+H) 在这里可能很危险,因为它将代码视为简单文本,没有语义理解:您需要单独检查每个出现的情况,否则可能会重命名未引用您要重命名的变量的标识符。
  • 使用第 3 方工具 - 除了开源 Rubberduck 之外,我不知道有任何 VBIDE 插件能够足够深入地理解代码以允许安全地重构 VBA 代码。项目,我自 2014 年 10 月以来一直管理该项目)。此插件会解析您的整个项目,构建符号表,并允许您导航,并且可以重构/重命名任何标识符,自动更新所有调用站点。

Rubberduck's rename refactoring at work

请注意,Rubberduck 是一个非常活跃的开源项目,并且在不断改进。解析 VBA 是困难,而让 VBE 的功能与现代 IDE 相当并不是一件小事,也不容易......但它很有趣,而且是的,它有效。

关于vba - 如何更改 Excel VBA 项目中的全局变量名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52039816/

相关文章:

php - 使用模板的电子邮件功能。通过 ob_start 和全局变量包含

sql - 在查询中添加行号

excel - 运行宏时使用 Excel

vba - 执行内部循环 - 错误 'Type Mismatch'

c# - Word 互操作 : How to obtain valid selected cells collection from Word table when selection area is not a rectangle?

java - 如何使用 Java 中的 Apache POI 从 Excel 读取/写入 XML map ?

python - 如何扫描所有工作表单元格

在 ActiveCell.Value <> ""上执行 VBA 类型不匹配错误

c# - 如何在没有全局变量的情况下持久化数据?

javascript - Console.log不输出json