Module
定义一个模块——一个不可实例化的容器,用于存放过程、常量、类型、枚举和模块级变量。模块的成员通过模块名访问(对于非私有模块中的Public成员,也可以直接访问)。
INFO
显式的Module ... End Module块是twinBASIC扩展。经典VBA纯粹通过文件类型(.bas与.cls)区分"标准模块"和"类模块";源代码中没有封闭关键字。在.twin文件中,twinBASIC要求(并支持)显式块,这允许在同一文件中包含一个类和一个模块,并允许属性应用于整个模块。
语法:
[ attributes ]
[ Public | Private ] Module name
[ modulemember ]
...
End Module
- attributes
可选 适用于模块的一个或多个属性。
- Public
可选 在ActiveX项目中,将模块标记为导出到类型库,以便其他项目中的使用者可以看到其Public成员。
- Private
可选 在ActiveX项目中,阻止模块导出到类型库:其成员仍可在项目内使用,但不会被导出。等效于在经典标准模块顶部放置Option Private Module。
- name
命名模块的标识符。
- modulemember
可选 以下任意项:
模块不能被实例化,也没有New构造函数。其Public成员表现为项目级的全局变量(受上述Public/Private模块修饰符约束)。
示例
vb
Public Module StringHelpers
Public Function Reverse(ByVal s As String) As String
Dim i As Long, r As String
For i = Len(s) To 1 Step -1
r = r & Mid$(s, i, 1)
Next i
Reverse = r
End Function
Public Function StartsWith(ByVal s As String, ByVal prefix As String) As Boolean
StartsWith = (Left$(s, Len(prefix)) = prefix)
End Function
End Module调用者可以通过模块名或直接访问成员:
vb
Debug.Print StringHelpers.Reverse("hello") ' "olleh"
Debug.Print StartsWith("hello world", "hi") ' False