vba - Class Module 与 VBA 中的 Module

我是新手,想了解 VBA。

modules 和 class modules 有什么区别?为什么我只能在 Modules 中使用宏。 (我想我这里错了,但我不知道如何从 Class modules 中添加宏)

最后,我必须在 class modules 中添加我所有的事件处理程序,并将我的所有宏代码都放在 modules 中。

回答1

Modules 在整个代码中都是全局的。默认情况下,录制的宏保存在 Modules 中,但您可以剪切代码并将子/函数粘贴到 class 中。

Mod1.DoSomething() ' Mod1 不需要实例化,它是全局的,通过应用程序,只有一个实例,称为单例模式。

Classes 是一个需要实例化它们的概念,它们的范围是有限的。

Public globalScope as New Class0 ' <--class0 的方法在 Module 或 Class 内外都可用。

Private memberScope as New Class1 ' <--class1 的方法在整个 Module 或 Class 中可用。

Dim localScope as New Class2 ' <-- class2 的方法仅在子/函数内部可用。

您可能希望将事件处理程序保留在 Module 中,因为它是全局的。如果您使用事件处理 class ,则这些事件将不可用。

.Net 编码中的 ps "Modules" 被称为 Static Classes

Ps2 说明 Subroutine 和 Function 之间的区别是;一个函数返回一个 value 作为子例程只是做一些事情。

相似文章