excel - vbval 与公共(public)变量

标签 excel vba public byref byval

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

最佳答案

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

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

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

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

关于excel - vbval 与公共(public)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18452555/

相关文章:

sorting - Excel VBA 排序

file - 填充 VBA 的最佳方法

java从私有(private)类调用公共(public)方法

java - java中任何类文件中MODULE变量的最佳访问修饰符?

java - 导出包含超过 256 列且带有 primefaces 的 Excel

VBA 运行时错误 424 : Object Required when trying to delete blank rows in a worksheet

vba - 如何避免 VBA 中的默认属性陷阱?

vba - 区分 Word 文档中的目录

SQL 从 Excel VBA : Create a temporary table in VBA (for reuse) from a SQL query

java - 类的公共(public)成员如何在 Java 中造成严重破坏?