![6e831cf193e579d00c324249d5be38d3.png](https://i-blog.csdnimg.cn/blog_migrate/93ec6e62d5555283ccc096ee08a0f17b.jpeg)
在上一篇中我们建立了一个极为简单的pigsy类,在这个类中我们定义了三个属性,一个方法。在谈到类对象在初始化的时候,我们特意的指出:某些属性可以通过自动初始化来设置,这样也会省去你一些麻烦。这就是本篇要谈的,类对象的初始化问题。
我们再来回顾一下类的接口技术:类为基于它所创建的所有对象定义了属性(Properties),方法(Metho),事件(Events),这些属性、方法和事件也称为类的接口(Interface)。可见,类的接口包含了属性,方法和事件这三块内容,这里的事件是指我们在类中定义的事件。其实,类除了我们外加给它的自定义事件以外,它与生俱来的就有两个事件:Class_Initialize(实例化事件)和Class_Terminate(销毁事件)。现在谈实例化事件。
一 什么是Class_Initialize(实例化事件)实例化事件,或者叫初始化事件。顾名思义,是在类实例化的时候自动触发。
类什么时候被实例化呢?就在执行
set objpigsy = New pigsy
这条语句的时候。如果你在初始化事件中写入一些代码,这些代码就会自动执行。类的初始化事件是我们初始化类属性的最佳场合。
我们在pigsy类代码模块中,代码窗格左上方的对象下拉框里面选择Class,右上方的事件下拉框中选择Initialize,类的实例化事件的响应子程序就自动创建好了。
![583b647bbde6d7d58450fc938e0c4ae5.png](https://i-blog.csdnimg.cn/blog_migrate/8cb3262c69fc5502ae44e04c0b181d59.jpeg)
Class_Initalize()这个事件响应子程序,与大家比较熟悉的Form_Load()事件响应子程序没有什么不同。只要这个事件发生了,那么就会自动执行其中的代码。现在我们就可以把场合(Situation)这个属性的初始化放在Class_Initalize()中了。
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
考虑到大师兄和二师兄的戏份较多,所以我们把初始化的Situation 设置为 "师兄"
Private Sub Class_Initialize()
Situation = "师兄"
End Sub
既然场合(Situation)属性已经被初始化了,标准模块中就不用再初始化该属性了。
Sub MYNZ_30()
Dim objpigsy As pigsy
Set objpigsy = New pigsy
objpigsy.Name = "猪悟能"
objpigsy.Gender = "男"
objpigsy.Speak
End Sub
代码解析:略
代码截图:
![4e528905307bd55d0767142d79f60e19.png](https://i-blog.csdnimg.cn/blog_migrate/d40cdb4a372d0e73debbfdc42ec46878.jpeg)
我们重新执行一遍MYNZ()子程序,会得到同样的结果。
![eede4511f9698034f22b5497aba1bf53.png](https://i-blog.csdnimg.cn/blog_migrate/560106f75f9d396884659217bd9fe930.png)
我们再次对代码进行分析,二师兄是男是女,是一个属性值,在原理上是不会变了,当然他可以变化,但无论怎么变,终究的性别是不会改变的。一般情况下我们的二师兄也懒得去做这种改变。我们来看看我们的类,你会发现,性别初始化以后,我们很容易的就能将它修改了。例如我们在MYNZ程序中,可以随意的添加一行代码:objPigsy.Gender = “女”,这下子,二师兄就会变性了。
在类中,我们有没有办法阻止类的使用者做这样操作呢?答案当然是肯定的,下一篇将给大家介绍一种更加健壮的定义属性的方法。
今日内容回向:
1 类的自带事件有什么?
2 如何设置类对象的初始化属性?
![2504c291b02cee9d65376e3907721f71.png](https://i-blog.csdnimg.cn/blog_migrate/d9c06fd97871bb8c4953be95cb9ad4c9.png)
在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!学习VBA是个过程,如太白诗云:众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。
“水善利万物而不争”,绵绵密密,微则无声,巨则汹涌。学习亦如此,知道什么是自己所需要的,不要蜷缩在一小块自认为天堂的世界里,待到暮年时再去做自欺欺人的言论。要努力提高自己,有一颗充满生机的心灵,把握现在,这才是进取。越是有意义的事情,困难会越多。愿力决定始终,智慧决定成败。不管遇到什么,都是风景。看淡纷争,看轻得失。茶,满也好,少也好,不要计较;浓也好,淡也好,其中自有值得品的味道。去感悟真实的时间,静下心,多学习,积累福报。而不是天天混日子,也不是天天熬日子。在后疫情更加严峻的存量残杀世界中,为自己的生存进行知识的储备,特别是新知识的储备。学习时微而无声,利用时则巨则汹涌。
VBA是利用Office实现自己小型办公自动化的有效手段,我根据自己20多年的VBA实际利用经验,现在推出了五部VBA教程。第一:VBA代码解决方案,是VBA中各个知识点的讲解,覆盖绝大多数的VBA知识点;第二:VBA数据库解决方案,是数据处理的专业利器,详细的介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作。第三:VBA数组与字典解决方案,讲解VBA中的数组和字典的利用。字典是VBA代码水平提高的手段,值得深入的学习。第四:VBA代码解决方案之视频,是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。第五:VBA中类的解读和利用,这是一部高级教程,对于自己理论的提高很有益处。上述教程可以根据1,3,2,5或者是4,3,2,5的顺序逐渐深入的学习和利用。
![2504c291b02cee9d65376e3907721f71.png](https://i-blog.csdnimg.cn/blog_migrate/d9c06fd97871bb8c4953be95cb9ad4c9.png)
最后将一阙词送给致力于VBA学习的朋友:浮云掠过,暗语无声,唯有清风,惊了梦中啼莺。望星,疏移北斗,奈将往事雁同行。阡陌人,昏灯明暗,忍顾长亭,多少VBA人,暗夜中,悄声寻梦,盼却天明,怎无凭!
分享成果,随喜正能量