VBA类 属性
为保证成员变量的安全性,通常设置为Private私有,不允许通过对象直接访问。
对象可以通过读写属性来访问私有的成员变量。
属性分为:读属性与写属性。
属性通常是Public公有的,对应的成员变量通常是Private私有的。
如果属性不加权限关键字,默认就是Public公有。
1 读属性
读属性:返回属性对应的值。返回值通常是私有成员变量,或者相应计算值。
读属性定义语法
Property Get 属性名() As 数据类型
属性名 = 返回值
End Property
声明以Property Get开头,以End Property结束。
属性名后需小括号( )。
返回值类型 通过As设置。
属性名 = 返回值 中属性名需与Get后的属性名一致。
属性调用
对象名.属性名
调用时属性名后不用跟小括号( ) 。
示例
声明Id的读属性
Private m_id As Integer '学生ID
Property Get Id() As Integer
Id = m_id
End Property
访问对象的Id属性
Debug.Print s.Id '调用对象s的Id的Get属性
2 写属性
写属性:将参数值赋值到私有成员变量。无返回值。
同一私有成员变量,它的写属性的属性名与读属性的属性名通常相同。
写属性语法
Property Let 属性名(参数名 As 数据类型)
成员变量 = 参数名
End Property
声明以Property Let开头,以End Property结束。
属性名后需小括号( )。里面通常有相应参数。
示例
声明Id的写属性
Private m_id As Integer '学生ID
Property Let Id(p_id As Integer)
m_id = p_id
End Property
调用Id的写属性
s.Id = 5 '调用Let属性
3 完整示例代码
Student3类模块代码,具有两个属性,都有读写属性。
Private m_id As Integer '学生ID
Private m_name As String '学生姓名
Property Get Id() As Integer
Id = m_id
End Property
Property Let Id(p_id As Integer)
m_id = p_id
End Property
Property Get Name() As Integer
Name = m_name
End Property
Property Let Name(p_name As Integer)
m_name = p_name
End Property
'显示学生信息
Public Sub display()
Debug.Print "id:" & m_id & ",name:" & m_name
End Sub
创建对象与访问代码
Sub test4()
Dim s As New Student3
'Id属性的写与读
s.Id = 5 '
Debug.Print s.Id
'Name属性的写与读
s.Name = "孙六"
Debug.Print s.Name
s.display
End Sub