公共函数仅对 Excel 的公式栏可见,它们位于“常规”*.bas 模块中。属于类的公共函数对编辑栏不可见。如果将这一点与我们可以模拟静态类的事实相结合,则可以有效地隐藏函数。
如果你创建一个类模块然后导出它,你会Attribute VB_PredeclaredId = False
在标题中找到。将此设置为 true 会创建该类的默认全局实例,该实例可以像更现代语言中的静态类一样使用。
例如,创建一个名为的新类模块Math
并将此函数添加到其中。
Public Function Add(a As Integer, b As Integer) As Long
Add = a + b
End Function
导出并删除文件,然后在记事本中打开它。将预先声明的 ID 更改为 true。
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "Math"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
保存并将文件导入回您的项目。
现在,在常规模块中,您可以使用限定调用来调用该函数。就像任何其他类方法一样。只是现在,我们有一个可以使用的类的默认实例。没有使用New
or Set
,它只是工作。
Sub Test()
Debug.Print Math.Add(1,2)
End Test