如何在vba中使用类、类模块?

在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 中的返回值的类型一致。

       

发表评论