VBA 类与对象
VBA支持面向对象:定义类与创建对象。
注:其中关于成员的术语延用Java中术语。
基本概念
类的内部封装了变量与过程(或函数);
类中的变量也称为成员变量;
类中的过程或函数也称为成员方法;
类中包含多个成员,成员分成员变量与成员方法。
一个类可以创建多个类的对象,多个类的对象都能复用类中的代码(变量、过程、函数)。
类的基本使用步骤
1)定义类;
2)通过类创建对象;
3)通过对象访问成员(包括成员变量与成员方法)。
本节命名说明
命名中m_开头的,表示member,成员;
p_开头的,表示parameter,参数。
1 定义类
创建类模块
[工程资源管理器],右键菜单—[插入]—[类模块]。
属性窗口中修改名称为自定义名称:Student
类模块Student中声明3个成员变量:ID、姓名、性别,1个成员方法:display方法显示信息。
类模块Student代码
Public m_id As Integer '学生ID
Public m_name As String '学生姓名
Public m_gender As Boolean '学生性别
'显示学生信息
Public Sub display()
Debug.Print "id:" & m_id & ",name:" & m_name & ":gender:" & m_gender
End Sub
其中Student为类,m_id、m_name、m_gender为成员变量,display为成员方法。
Public表示公有成员,在类的外部也能够访问。
2 创建对象
第1种方式:声明的同时创建对象
Dim 变量 As New 类名
第2种方式:先声明,再创建对象
Dim 变量 As 类名
Set 对象 = New 类名
通过New创建的对象赋值时必须使用Set,不可省略。
3 访问成员
访问成员变量
对象名.成员变量
访问成员方法
对象名.成员方法
4 对象的完整示例
创建第1个Student类的对象
Sub test1()
'声明时同时创建对象
Dim s1 As New Student
'访问对象的成员变量
s1.m_id = 1
s1.m_name = "张三"
s1.m_gender = True
'访问对象的成员过程
s1.display
End Sub
输出内容:
id:1,name:张三:gender:True
创建第2个Student类的对象
Sub test2()
'先声明对象
Dim s2 As Student
'再创建对象
Set s2 = New Student
s2.m_id = 2
s2.m_name = "李四"
s2.m_gender = False
s2.display
End Sub
输出内容
id:2,name:李四:gender:False
对象s1、s2重复利用类Student中的代码,也称为类的代码可重用性。