【分享成果,随喜正能量】再大的困难,也大不过人心。再高的天空,也不如人心高。很多人一辈子辛苦,争来争去,什么都要计较,过得苦不堪言,到最后才发现根本没有一样东西是属于自己的,这才是最大的悲哀。人生如梦,一旦梦醒了,梦中幻想的那些东西也就不存在了,可能它们也从来没有那么重要过。

《VBA中类的解读及应用》教程是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。

类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入,有必要理解这些抽象的理论知识。对象,类,过程,方法,属性,事件,接口,接口如何实现等等。掌握了这些理论,不仅对于VBA这种寄生语言的实质有所深入的理解,也对自然界的很多事物将同样有所感悟。目前,这套教程程序文件已经通过32位,64位两种office系统测试。

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:私有变量与类属性的关系

类的成员变量作用范围是整个类吗(私有变量与类属性的关系)(1)

第三十三讲 “二师兄”的成长历程之五----私有变量与类属性的关系

大家好,我们继续关注二师兄的成长,在上一讲中,我们讲了两个属性Name及DOB的设置,同时我讲解了限制字符长度及“只赋值一次”的实现方案。这些在我们实际工作中利用都是非常多的,希望大家都能掌握这些方法。今日我们继续添加属性。

4 Age(年龄)属性

有了出生日期,很自然的你会联想到计算年龄。当然这是一个只读属性了。我们定义年龄属性如下

Public Property Get Age() As Integer

Age = DateDiff("yyyy", myDOB, Date)

End Property

代码解析:以上过程实现了AGE的只读属性,它的值是通过函数DateDiff计算得来。

到这里pigsy类的属性我们就全部建立完成了。

看下面的截图:

类的成员变量作用范围是整个类吗(私有变量与类属性的关系)(2)

我们看出:类中的模块级私有变量(可以称之为宿主或者容器)与类的属性之间,可以不必存在一一对应的关系。例如myDOB这个模块级的私有变量,既可以和DOB/DOBA对应,还能和Age对应起来。如果拿数据库中的表对象和查询对象来类比的话,myDOB好比表对象,DOB,DOBA,Age属性好比基于表对象的查询,表对象任何时候都不允许用户直接读写,用户必须通过查询来读写数据。这就是类中属性的定义与属性的实现之间的核心观点。

最后将最终的代码贴给大家:

类代码

' pigsy类代码

【代码见教程】

End Sub

下面我们做一下测试代码:

Sub MYNZ_32()

Dim objpigsy As pigsy

Set objpigsy = New pigsy

objpigsy.Name = "猪悟能"

objpigsy.Gender = "男"

objpigsy.Speak

MsgBox "修改前性别: " & objpigsy.Gender & Chr(13) & "下面将尝试修改性别为女"

objpigsy.Gender = "女"

MsgBox "修改后性别: " & objpigsy.Gender

objpigsy.DOB = #2/3/1520#

MsgBox objpigsy.Name & "的生日是:" & objpigsy.DOBA

MsgBox objpigsy.Name & "的年龄是:" & objpigsy.Age & "岁"

objpigsy.DOB = #6/10/1520#

MsgBox objpigsy.Name & "的生日是:" & objpigsy.DOBA

End Sub

代码的截图:

类的成员变量作用范围是整个类吗(私有变量与类属性的关系)(3)

代码解析:上面的测试代码中,我们首先测试的是姓名,我们给出的值是"猪悟能",测试是通过的,当然我们也可以将这个值变成5个字符,大家可以自己测试一下;然后测试的是性别,赋值后要再次改变这个值,得到的结果是不能修改。然后我们又测试了出生时期和年龄的关系,大家可以试着自己测试一下,看看结果的不同提示。下面只给出部分的测试截图:

类的成员变量作用范围是整个类吗(私有变量与类属性的关系)(4)

类的成员变量作用范围是整个类吗(私有变量与类属性的关系)(5)

类的成员变量作用范围是整个类吗(私有变量与类属性的关系)(6)

今日内容回向:

1 属性和宿主是什么关系?

2 宿主或者容器如何理解?

本讲内容参考程序文件:VBA-CLASS(32-33).xlsm

类的成员变量作用范围是整个类吗(私有变量与类属性的关系)(7)

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

类的成员变量作用范围是整个类吗(私有变量与类属性的关系)(8)

【分享成果,随喜正能量】很多事,不是你想,就能做到的。很多东西,不是你要,就能得到的。很多人,不是你留,就能留住的。不要把什么都看得那么重。人生最怕什么都想计较,却又什么都抓不牢。失去的风景,走散的人,等不来的渴望,全都住在缘分的尽头。何必太执着,该来的自然来,会走的留不住。放开执念,随缘是最好的生活。

,