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