VBA小白入门之:类模块

一、大致解释一下什么是类、对象

有一些计算机常识的,都应该知道什么叫类(Class)或者对象(Object)。一个对象,可以有属性、方法。举个白痴但是通俗的例子:人作为一种对象,有上着、下着这两个可读可写的属性,以及穿着好看不好看这个只读的属性,还有走路、跑步这两种方法。属性返回的是一个值,方法返回值不能表达的东西。

再举一个Excel里的例子:A1单元格,有字体、字号、边框样式……这些可读可写的属性,还有所在位置、所属Sheet、……这些只读的属性,还有清除其中内容、将其中的字母全变大字、……这些方法

类有一个特点,凡是同属于这个类的对象,其属性、方法的类目(如上面说的字号、边框样式,而不是说14号字、粗边框这种具体的)都是相同的。也就是说,定义好了一个类,赋与不同的属性,就能搞出许多对象。

比如,造出一个叫“地名”的类,令其属性“地图”为陕西的行政区划,则问它“灞桥”,它就能返回“陕西省-西安市-灞桥区”。创建若干个同属地名这个类的对象,扔进去不同省的,问它地名,它就能告诉你相应省内地区的行政归属。

总地来说,这东西和函数稍有类似,能够按照既定的模式,在给定的参数下,做出不同却相似的效果。

二、VBA的类模式怎么玩

1 创建一个类

打开Excel中的开发工具-查看代码

如图新建一个类:

给这个类起个名字:

赋予它属性,定义好内部存储这些属性的变量:

赋予它属性,告诉VBA怎么写入(Let)、读取(Get)属性(Property)。注意,如果正在写入的这个属性和其他属性是关联的,则在这时即可对这个关联的属性赋值,如图中的“受到未成年保护”这个属性:

如果所赋值不是变量,而是对象,则需要改用Set替代Let

这里需要注意,属性在赋值时指定(Let)成了什么数据类型(Property Let 年龄(x as Integer)中的Integer),在获取(Get)该属性的代码(Property Get 年龄() As Integer)中,应该令返回值为这种数据类型(As Integer)。

告诉它怎么“动”(即赋与一种方法),比如弹出窗口(MsgBox)来介绍自己:

提示:如果想让方法有返回值,则将本段代码第一行的Sub换成Function

Private Gender As String, Age As Integer, Protected As Boolean

Property Let 性别(x As String)
    Gender = Left(x, 1)
End Property

Property Get 性别() As String
    性别 = Gender
End Property

Property Let 年龄(x As Integer)
    
    
    If x >= 18 Then
        Protected = False
    Else
        Protected = True
    End If
    
    
    Age = CInt(Round(CSng(x), 0))
    
End Property

Property Get 年龄() As Integer
    年龄 = Age
End Property


Property Get 受到未成年保护()
    If Protected Then
        受到未成年保护 = "是"
    Else
        受到未成年保护 = "否"
    End If
End Property

Sub 自我介绍()
    
    If Protected = True Then
        tmp1 = ",受到未成年人法的保护"
    Else
        tmp1 = ",不受未成年人法的保护"
    End If
    
    MsgBox Gender & "性,年" & Age & tmp1

End Sub

2 新建并使用这个类下的对象

插入模块:

在一个过程(Sub)中创建3个这个类的对象,Alice、Bob、哪吒:

赋予三个“人”以性别、年龄:

弹出框里那个黄的表示方法,白灰蓝那个表示属性
Sub 演示()
Dim Alice As New 人
Dim Bob As New 人
Dim 哪吒 As New 人


    Alice.年龄 = 26
    Alice.性别 = "女"
    
    Bob.年龄 = 21
    Bob.性别 = "男"
    
    哪吒.年龄 = 16
    哪吒.性别 = "男"
    
    
    Alice.自我介绍
    Bob.自我介绍
    哪吒.自我介绍
    
End Sub

点击运行试试看:

就会依次弹出:

你可能感兴趣的:(VBA小白入门之:类模块)