2

在 VBA 中,我通常将共享变量定义为 Public,而不是通过 byVal 或 byRef 构建引用。最常见的是,我调用一个子程序或函数来为所述变量建立一个值。有人可以向我解释使用 byVal/byRef 与简单地创建公共变量的好处吗?

4

1 回答 1

3

这与您如何定义架构有关。好吧,VBA 并不是真正的 OOP 语言,这就是这个问题出现在您脑海中的原因。

公共变量保持(保留它们的值)直到模块的实例(它们被声明)在内存中。例如,公共变量是通用模块,直到 ThisWorkbook 打开(除非有任何运行时错误)。另一方面,用户窗体模块中的公共变量一直保持到用户窗体的实例打开为止。类模块中的公共变量是“属性”,并且一直保存到内存中类的实例变量。在其他一切都基于类的 OOP 语言中,没有所谓的公共变量……正如我所说的“属性”,它们是保留的,直到加载类实例。

ByVal(byValue) 或 ByRef(byReference)只是将变量作为参数传递的一种方式(取决于您在函数中需要什么)。

哪个更好:根据我以前的经验,VBA 中的公共变量确实很容易实现,但更容易混淆。太多的公共变量 = 太多的调试时间。仅使用 2~3 个公共变量并在类中设计代码以保存属性。这样,当您跳到其他语言时,您将在家:)

于 2013-09-11T21:46:42.960 回答