vbval 与公共变量 [关闭]

Posted

技术标签:

【中文标题】vbval 与公共变量 [关闭]【英文标题】:vbval vs public variable [closed] 【发布时间】:2013-08-29 10:33:58 【问题描述】:

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

【问题讨论】:

你的代码更干净,这意味着当你遇到问题时更容易调试。使用全局变量时,有时很难追踪代码可能更改特定全局值的所有点:这意味着您不能总是依赖全局值在整个方法中保持不变。 【参考方案1】:

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

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

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

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

【讨论】:

以上是关于vbval 与公共变量 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

属性与公共成员变量[重复]

VBA:公共变量与属性

在私有子中引用公共变量时遇到问题

可以从变量字典中填充变量类[关闭]

类中的属性与公共声明变量[重复]

如何从变量中取值如果java中的Statement [关闭]