VBA 类与对象

VBA支持面向对象:定义类与创建对象。

注:其中关于成员的术语延用Java中术语。


基本概念

类的内部封装了变量与过程(或函数);

类中的变量也称为成员变量;

类中的过程或函数也称为成员方法;

类中包含多个成员,成员分成员变量与成员方法。


一个类可以创建多个类的对象,多个类的对象都能复用类中的代码(变量、过程、函数)。


类的基本使用步骤

1)定义类;

2)通过类创建对象;

3)通过对象访问成员(包括成员变量与成员方法)。


本节命名说明

命名中m_开头的,表示member,成员;

p_开头的,表示parameter,参数。


1 定义类

创建类模块

[工程资源管理器],右键菜单—[插入]—[类模块]。

img

属性窗口中修改名称为自定义名称:Student

img

类模块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中的代码,也称为类的代码可重用性。