🛄 类模块、引用对象 —— VB 面向对象编程基础
在开始之前,首先声明一下:Visual Basic 不是一门真正的面向对象编程语言。Visual Basic 直到 VB4 开始才有了对对象的初步支持,并且直到最后的 VB6 仍然不支持构造函数、类的继承、静态类等这些在真正的面向对象语言中稀松平常的概念。尽管这样,我们仍然可以在 VB 里进行基本的面向对象编程,并且调用其它任何支持 COM 的编程语言中的对象。
🛄 类型和类模块
📊 自定义数据类型
在任意文件中,使用 Type
关键字可定义一个类型。
类型不是对象,只是用于存储序列化数据。
1 | Private Type Student |
1 | Dim LiHua As Student |
可以创建一个自定义类型数组,更方便地访问。
1 | Dim Students(1 To 10) As Student |
🛄 类模块
在工程资源管理器中,右键点击,点击「添加」-「添加类模块」即可创建一个类。
使用类模块编写的类是真正的对象,但因为操作略微蛋疼,因此不适合存储数据,但适合进行一些更复杂的操作。
下面是一个存储颜色值的类。
Color.cls
1 | '类的属性 |
Main.bas
1 | Sub Main() |
✏️ 给对象赋值
使用 Set
语句以给对象赋值。
上面的 Dim GreatColor As New Color
其实也可以用 Set
赋值语句来写。
1 | Dim GreatColor As Color |
Set
语句不应过多使用,因为这个语句是传递引用。
1 | Dim Greatcolor2 As Color |
🚮 初始化方法和销毁方法
VB 的类提供了两个方法 Initialize
和 Terminate
。
初始化方法 Initialize
可以用于给类中的数据设置默认值、建立连接等。
1 | Private Sub Class_Initialize() |
销毁方法 Terminate
类似现代编程语言中的「生命周期方法」或「解构函数」,可以在对象被销毁时执行,用于释放资源、关闭连接等。
ℹ️ 更多高级用法
对于默认值持久化等高级用法,参见微软官方文档。
📥 引用外部对象
Visual Basic 是基于 COM 的,因此可以引用任何 COM 库中的对象(即「调库」)。
📥 引用
点击「工程」-「引用」,勾选需要引用的库即可。
例:使用「引用」创建一个 WScript Shell:
- 在「引用」中勾选 Windows Script Host Object Model。
Dim Wsh As New WshShell
如果某个库没有使用 regsvr32
注册,可以点击「浏览」直接从文件引用。
🔍 对象浏览器
点击「视图」-「对象浏览器」打开对象浏览器。在对象浏览器里,可以查看标准库和所有引入的库中的对象,以及它们的所有方法。

对象浏览器虽不及现代的 IDE 那么智能,但也给我们提供了浏览库中内容的一种相对方便的手段。
🅰️ ActiveX
当你不知道某个对象在哪个库里时,可以直接使用 CreateObject
函数引用 ActiveX 对象。
例:使用 CreateObject
创建一个 WScript Shell:
1 | Dim Wsh As Object |
因为 VB 的 IDE 过于陈旧,所以这种方法有一定局限性,比如补全不再可用,并且对象浏览器也不能用。但使用 CreateObject
引入对象时,可以避免潜在的命名空间污染。