VBA 类模块系列之五——使用你的第一个类

第二篇中我介绍过,类就是做饺子的塑料模具。到目前为止,我们做好了一个叫做Person的模具。现在我们要用这个模 … 继续阅读“VBA 类模块系列之五——使用你的第一个类”

第二篇中我介绍过,类就是做饺子的塑料模具。到目前为止,我们做好了一个叫做Person的模具。现在我们要用这个模具做真正的饺子了。

还记得你是怎样使用ADODB库中的Recordset对象的吗?你在窗体代码模块,或者标准代码模块里面声明一个Recordset变量(Dim rst as Recordset),然后使用Set rst = New Recordset 语句创建一个Recordset对象,将rst指向这个新创建的对象。这里我们也是一样的操作:插入一个标准代码模块,然后添加一个子程序Test(),在子程序中添加如下代码:

现在对象变量objPerson指向了一个真正的“饺子”了,这个“饺子”有3个属性:姓名,性别,场合。现在这3个属性都是空白的,什么值都没有。所以我们要先给它们赋值。

Option Compare Database
Option Explicit

Sub test()
    Dim objPerson As Person
    Set objPerson = New Person
    
    objPerson.Name = "赵冰冰"
    objPerson.Gender = "女"
    objPerson.Situation = "一般"

End Sub

属性赋值以后,我们就可以调用类的方法了,目前只有一个方法Speak。

Option Compare Database
Option Explicit

Sub test()
    Dim objPerson As Person
    Set objPerson = New Person
    
    objPerson.Name = "赵冰冰"
    objPerson.Gender = "女"
    objPerson.Situation = "一般"
    objPerson.Speak
End Sub

我们执行一下这个子程序,一个这样的信息窗口就会跳出来:

我们成功了!感觉如何?我们创建了自己的类,又用它实例化了一个对象,设置了它的属性,调用了它的方法。

欣喜之余,冷静的读者可能会提出一个问题来:调用类的方法Speak前,还需要设置这么多的属性,忙乎了半天,这个类也没帮到我们多少事情,何必呢?好吧,你说得对。如果对象在创建的时候,某些属性就能自动初始化,比如让场合(Situation)这个属性默认设置为“一般”,那就好了。我们就可以少初始化一个属性了。

这个问题当然是有办法解决的。这正是下一篇我们要谈到的:类的实例化事件。

《VBA 类模块系列之五——使用你的第一个类》有2个想法

  1. 怎么弹出 编译错误:无效外部过程。
    点击确定后situation变黄。
    我用的是access2010。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注