VBA中类的解读及应用第二十九讲: 最简单的类属性建立
《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。
类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入,有必要理解这些抽象的理论知识。对象,类,过程,方法,属性,事件,接口,接口如何实现等等。掌握了这些理论,不仅对于VBA这种寄生语言的实质有所深入的理解,也对自然界的很多事物将同样有所感悟。目前,这套教程程序文件已经通过32位,64位两种office系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA中类的解读及应用第二十九讲 最简单的类属性建立----“二师兄”的成长历程之一
【分享成果,随喜正能量】328比起有人左右情绪的日子,我更喜欢无人问津的时光,一个人最好的状态,就是独处的时候;安静自在,不用周旋于别人情绪,也不必刻意判断他人的心思,自己陪同自己,回归一个真实的自己。
第二十九讲 最简单的类属性建立----“二师兄”的成长历程之一
各位朋友好,在上一讲中,我们讲了类的接口问题及如何规范类的接口。从这讲开始我们将利用一段时间来给大家讲解先建立一个类,然后让他不断的成长,不断的完善,让他更加丰富,这个过程的讲解历时会长一些,让大家看到真正的类的成长。
为了建立一个类,我们首先在VBE里面,选择插入菜单-类模块,一个空白的类模块就创建好了;接下来,我们现在要用这个类来模拟一个二师兄(pigsy);在上一讲中谈到,类的接口是由属性,方法,事件构成的,那么我们要模拟pigsy的哪些属性,方法,事件呢?
1 pigsy类的属性(Properties)
pigsy的属性太多了,姓名,性别,年龄,身高,体重,住址,兵器,职务等等。我们先弄简单点,只考虑pigsy的Name(姓名)和Gender(性别)。
我们确定了目标,就可以开始行动了。因为我们要用这个类来模拟pigsy,那首先我们就将这个类的名字改成pigsy。这个很简单,在左下角的名称属性里面,如果没有属性的界面,可以按下F4键看到,我们将“类1”改为“pigsy”。然后我们在类中建立Name(姓名)和Gender(性别)这两个属性。

在之前的章节中讲过,为类创建属性,最简单的方法就是在类的头部声明一个Public(公共)变量。这里我们申请两个:
Public Name As String
Public Gender As String
2 pigsy类的方法(Metho)
属性(Properties)添加好了,接下来考虑方法(Metho)
这个类需要什么方法呢?因为这个类就只有两个属性,姓名和性别,你会怎么称呼这个pigsy呢?这个得看你跟他的关系了。如果你们之间只是旧时职务的关系话,你会叫他“天蓬”,如果是大师兄在非常正式的场合,你应该叫“呆子”,如果是师父或者大师兄在正式的场合,你应该叫“八戒”。我们给这个类添加一个名叫Speak(称呼)的方法。但是根据什么来确定具体称呼的方式呢?我们需要再多添加一个确定Situation(场合)的属性,有了这个属性,我们才好确定该用何种方式称呼。
Public Name As String’属性姓名
Public Gender As String’属性性别
Public Situation As String’属性场合
’类的方法
Public Sub Speak()
Select Case Situation
Case "师父"
MsgBox "八戒"
Case "师兄"
MsgBox "八戒"
Case "非正式"
MsgBox "呆子"
Case "师弟"
MsgBox "二师兄"
Case Else
MsgBox "天蓬元帅"
End Select
End Sub
代码截图:

代码解析:在上面的类模块代码中,我们分别设置了三个属性:Name,Gender,Situation分别代表姓名,性别,场合;一个方法:Speak,这个方法中,我们只分了四种场合,如果不是以下的这四种场合:师父对pigsy的场合,师兄对pigsy的场合,师弟对pigsy的场合,非正式对pigsy的场合,我们将称呼他"天蓬元帅"。
3 pigsy类的实例化过程
下面我们将实例化这个类,进行测试:
Sub MYNZ_29()
Dim objpigsy As pigsy
Set objpigsy = New pigsy
objpigsy.Name = "猪悟能"
objpigsy.Gender = "男"
objpigsy.Situation = "师兄"
objpigsy.Speak
End Sub
代码解析:在上述代码中,我们将实例化pigsy类,利用的对象是objpigsy,并在标准模块中将这个对象的Situation属性设置为 "师兄",并利用 Speak方法给用户以反馈。
下面我们执行一下代码:

我们注意到,调用类的Speak方法前,我们设置了这么多的属性,那么这些属性的设置可否能进行自动设置呢?当然是可以的。如果对象在创建的时候,某些属性就能自动初始化,比如让Situation这个属性默认设置为“师兄”,我们就可以少初始化一个属性了。
这个问题当然是有办法解决的。我们将在之后要谈到的:类的实例化事件。

今日内容回向:
1 类的接口包括哪些内容?
2 类的属性和方法在本讲中是如何设置的?
本讲内容参考程序文件:VBA-CLASS(29-30).xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:


