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

问题描述 投票:2回答:2

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

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

我想在我的项目中只初始化这个变量一次,在这种情况下使用全局变量是否正确?我找到了很多材料,建议应该避免使用这些方法(根据这个答案)。在VBA中初始化全局变量). 如果这是不正确的,那么在整个项目中引用单元格的最佳做法是什么?

excel vba initialization global-variables
2个回答
0
投票

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

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

EDIT:是否在WorkBook_Open中初始化全局变量。

虽然你可能想在Workbook_Open事件中初始化它们,但我不会那样做,除非需要它们的时候。

例如,如果你的工作簿可能会被打开一天以上,而你根据一周的哪一天来初始化一个变量,那么在工作簿打开的时候这样做就会有问题。如果没有具体的细节,很难说,但我的一般建议是在任何依赖它们的过程开始时初始化它们。所以,举例来说,如果每次有人按下按钮时都需要,就在响应按钮按下的例程中初始化它们。另一方面,如果它们依赖于工作簿被打开的事物状态,那么你会希望在那一刻初始化它们。我希望这能帮助你


0
投票

当声明你的变量时,请使用(假设它是一个整数)。Public LowerBound as Integer

一定要在任何过程或函数之外声明这个变量。

© www.soinside.com 2019 - 2024. All rights reserved.