[VBA]类模块
使用类模块可以创建自定义的类,使用此类作为模板创建对象。
类模块包含一系列的属性,方法和事件,用来和其他对象或创建对象的代码交互。
· 属性
有两类属性,第一类为Public类型的模块级变量,第二类为Property过程。
· 模块级变量
例:
Public ProductId As Long
使用这种方法定义的属性不能返回数组,定长字符串,常量或用户自定义类型。
· Property过程
Property Let:用来设置属性值的过程
Property Get:用来返回属性值的过程
Property Set:用来设置对对象引用的过程
声明Property过程的语法:
[Public | Private] [Static] Property { Get | Let | Set } propertyname [(arguments)] [As type]
statements
End Property
在Property过程声明中所需要的参数为:
Property Get propname(1, ..., n) As Type
Property Let propname(1, ..., n, n+1)
Property Set propname(1, ..., n, n+1)
在具有相同名称的Property过程中,从第一个到最后一个参数(1, ..., n)都必须共享相同的名称与数据类型。
其中Property Get过程的数据类型必须与相关的Let及Set声明中的最后(n+1)个参数的类型相同。
※在Property Set声明中,最后一个参数的数据类型必须是对象类型或Variant。
例:
Property Let Names(intX As Integer, varZ As Variant)
' statement here.
End Property
Property Get Names(intX As Integer) As Variant
' statement here.
End Property
· 方法
就是一个过程。
定义为Private的方法只可以在类内部使用。
· 事件
使用Event语句定义事件。
[Pubulic] Event eventname [(arglist)]
事件只能在所声明的模块中产生。
使用RaiseEvent语句产生事件。
不能声明带返回值的事件。
VBA定义了2个特殊的事件,Initialize和Terminate。
※在创建对象时使用WithEvents关键字来使用事件。
※Class_Initialize事件的代码在类被创建时执行,Class_Terminate事件的代码在类被销毁时执行。