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

在我的VBA项目中,我有许多模块和子目录中提到的单元格。 为了便于阅读,我已经通过以下方式声明并初始化一个variables给单元格引用:

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

我想在我的项目中只初始化一次这个variables,在这个实例中使用全局variables是否正确? 我发现许多材料build议这些应该避免(根据这个答案在VBA中初始化全局variables )。 如果这是不正确的,在整个项目中引用一个单元格时,最好的做法是什么。

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

如果你不能这样做,那可能意味着你需要重新考虑你的代码的组织。

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

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

例如,如果您的工作簿可能会保留一天以上,并且基于星期几初始化variables,那么在工作簿打开时这样做会成为问题。 没有具体的细节,很难说,但是我的一般build议是在任何依靠它们的过程开始时进行初始化。 因此,例如,如果每次有人按下button时都需要,则在响应button按下的例程中初始化它们。 另一方面,如果他们依赖打开工作簿的事情的状态,那么你就想在那个时候初始化它们。 我希望有帮助

当声明你的variables使用(假设它是一个整数):
Public LowerBound as Integer

一定要在任何程序或function之外声明这一点。