美文网首页
VBA小白入门之:类模块

VBA小白入门之:类模块

作者: 離塵真心 | 来源:发表于2020-01-10 15:30 被阅读0次

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

    有一些计算机常识的,都应该知道什么叫类(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小白入门之:类模块

          本文链接:https://www.haomeiwen.com/subject/gkgpactx.html