首页 > 解决方案 > 如何更改 Excel VBA 项目中的全局变量名称?

问题描述

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

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

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

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

有没有办法通过 Excel“IDE”或其他工具安全地做到这一点?

标签: vbaexcelglobal-variables

解决方案


您需要在此处进行的操作称为重构——您需要对代码进行可能危险的更改,同时不影响其行为。做错了,代码就会中断!

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

大多数现代 IDE 都具有这样的功能(以及其他一些重构)。然而,在 Visual Studio 成为它从那时起成为全功能工具之前,VBE 就处于其辉煌的顶峰 - 哎呀,VBE1998 年的 Visual Studio (6.0)!

所以你真的有两个选择:

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

Rubberduck 在工作中的重命名重构

请注意,Rubberduck 是一个非常活跃的开源项目,并且在不断改进。解析 VBA很难,让 VBE 在功能上与现代 IDE 相提并论不是一件小事,也不是一件容易的事……但它很有趣,是的,它可以工作。


推荐阅读