在vba中,有很多预置的类,比如
Dim oWK As Worksheet
Worksheet就是一个类。
对象是类的实例化,比如Worksheet是工作表类,sheet1就是类的一个实例对象。
如果要新建一个类,可以在vbe编辑窗口 鼠标右键插入类模块。
其中类模块的名称就是类的名称。
我们知道类具有属性和方法和事件。
新建的类,如果要设置它的属性可以定义全局变量或者使用Property Get 语句设置属性。
比如新建了一个名为“类1”的类模块
然后添加如下的代码:
Public height As Long
Property Get length()
length = 100
height = 20
End Property
在标准模块中插入如下的代码:
Sub QQ1722187970()
Dim obj As 类1
Set obj = New 类1
With obj
MsgBox .length
MsgBox .height
End With
Set obj1 = Nothing
End Sub
从以上代码可以看出来,length ,height 都成为了 obj 的属性。
如果要为类指定方法,只需要在类模块中添加sub过程即可。
如下所示在类模块中输入以下代码:
Sub lyq()
MsgBox 1
End Sub
然后在标准模块中输入以下代码:
Sub xyf()
Dim obj As New 类1
With obj
.lyq
End With
End Sub
就可以调用类的方法lyq了。
如果要为类的属性赋值,可以使用 Property Let 语句。
比如在类模块中输入如下代码:
Public lLen As Long
Property Get length() As Long
length = lLen
End Property
Property Let length(ByVal i As Long)
lLen = i
End Property
在标准模块中可以通过这样的代码给类的Length属性赋值:
Sub xyf()
Dim obj As 类1
Set obj = New 类1
With obj
.length = 123
End With
End Sub
其中Property Let length(ByVal i As Long) 中的形参 i 表示要给属性Length的赋值,该形参类型要和Property Get length() As Long 中的返回值的类型一致。


发表评论