如何在VBA中正确初始化全局单元格引用变量

时间:2015-05-21 15:01:57

标签: excel vba excel-vba initialization global-variables

在我的VBA项目中,我有许多单元格,我在很多模块和子模块中引用它们。为了便于阅读,我已按以下方式声明并初始化了一个变量到单元格引用:

LowerBound = ThisWorkbook.Sheets("Rules").Range("B22").Value

我想在我的项目中初始化这个变量一次,在这个实例中使用全局变量是否正确?我发现很多材料表明应该避免这些(根据这个答案Initialising global variables in VBA)。如果这是不正确的,那么在整个项目中引用单元格时最佳做法是什么。

2 个答案:

答案 0 :(得分:0)

声明变量使用时(假设它是一个整数):
{{1}}

请务必在任何程序或功能之外声明此内容。

答案 1 :(得分:0)

一个好的做法是在主过程中初始化全局变量,然后将它们传递给任何其他需要它们的过程。这有助于防止无意中更改另一个过程中的值的问题。

如果您无法做到这一点,则可能意味着您需要重新考虑代码的组织。

编辑:是否在WorkBook_Open中初始化全局变量:

虽然您可能希望在Workbook_Open事件中初始化它们,但除非需要它们,否则我不会这样做。

例如,如果您的工作簿可以保持打开超过一天并且您根据星期几初始化变量,那么在工作簿打开时这样做会有问题。没有具体的细节,很难说,但我的一般建议是在任何依赖它们的过程开始时初始化它们。因此,例如,如果每次有人按下按钮时都需要,请在响应按钮按下的例程中初始化它们。另一方面,如果它们依赖于打开工作簿的状态,那么您希望在那一刻初始化它们。我希望有帮助