首发于 VBA解决方案
神通广大的类,瞬间实例多个类对象

神通广大的类,瞬间实例多个类对象

大家好,我们这讲讲解实例化类的存储及访问。这讲的内容也是为让我们更加深入地理解类对象的意义。和八戒相比,大师兄的本例最为称道的是拔撮毫毛吹口气,瞬间会产生多个大师兄。类是对象产生的模板,如何在类模块中实现类似功能呢?

在之前的讲解中,我们知道:在VBA中,类在类模块中进行定义,是产生对象的模板。但“对象”一词是非常模糊的。理论上我们可以定义一个对象来表示想要的任何东西;任何概念上可以描述的东西都可以用类表示。类和对象之间的区别是,类什么也不做,也不消耗内存。它就像一幅建筑工地使用的图纸。当您拥有该类类型的变量并使用New关键字创建该类的实例时(称为实例化的进程),它才能成为一个对象并消耗内存,并可以执行操作。一个类由它的属性定义,在类模块中可描述类的属性,以及类的方法(sub过程和函数过程),它们在对象中执行操作。如果类类似于名词,则属性类似于形容词——它描述对象。方法就像一个动词——它执行一个动作。

为了让类对象进行必要的操作,必须将一个类实例化为一个对象。实例化的一个例子如下所示:

Dim C As Class1

Set C = New Class1

其中Class1是类模块的名称。与其他语言不同,VBA只允许一个类模块中存在一个类,而类的名称就是模块的名称。现在C对象变量可以使用Class1中定义的属性和方法。

注:也可以将以上两个语句合并成一个语句:

Dim C As New Class1

这称为自动实例化变量。当在代码中首次遇到变量C时,将创建一个新实例。一般来说,你应该避免自动实例化变量。

为了实现让类模板创建多个类对象并存储,也就是实现拔根毫毛吹口气瞬间产生多个大师兄的功能,我们先写一个简单的员工类的代码,在这个代码中,我们再来展示一下类功能与集合字典的综合运用。

一 首先建立一个宿主型的CEmployee类,先看下面的代码:

Private pName As String

Private pAddress As String

Private pSalary As Double

Public Property Get Name() As String

Name = pName

End Property

Public Property Let Name(Value As String)

pName = Value

End Property

Public Property Get Address() As String

Address = pAddress

End Property

Public Property Let Address(Value As String)

pAddress = Value

End Property

Public Property Get Salary() As Double

Salary = pSalary

End Property

Public Property Let Salary(Value As Double)

If Value > 0 Then

pSalary = Value

Else

MsgBox "工资数值错误!"

End If

End Property

代码截图:

代码讲解:

1 上述代码过程建立了一个标准的宿主型CEmployee类,这个类的过程利用宿主实现了属性值的修改和传递,在数据写入的时候,可以通过值的判断,从而控制值的范围。这段代码是类模块中非常标准的一个代码。

2 在值的传递过程中,Get过程用于从类中返回一个值,而Let过程用于将一个值放入类中。注意,Get属性过程的返回数据类型必须与Let属性过程的(最后一个)参数相同。否则,您将得到一个编译器错误。


今日内容回向:

1 请再次理解什么是类,什么是对象?

2 对象一个标准的类模块,有哪些功能?

3 如何控制属性的值的范围?


本讲内容请参考程序文件VBA-CLASS(下69-71).xlsm




在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。

学习VBA是个过程,这个过程是自己忍受孤独的过程。

“水善利万物而不争”,你看她绵绵密密,微处则无声,巨则汹涌。学习亦如此,把握现在,为达千里,需要默默耕耘,知道什么是自己所需要的,不要蜷缩在一小块自认为天堂的世界里,待到暮年时去自欺欺人。要在当下,用一颗充满生机的心灵,努力提高自己,这才是进取。越是有意义的事情,困难会越多。愿力决定始终,智慧决定成败。不管遇到什么,都是风景。看淡纷争,看轻得失。一杯茶,满也好,少也好,不要去计较;浓也好,淡也好,其中都有值得品的味道。去感悟真实的时间,静下心,多学习,积累福报。而不是天天混日子,也不是天天熬日子。一切众生的心都在变化,像时间一样,永远不会停留,把握现在就是福报。

VBA是利用Office实现自己小型办公自动化的有效手段,我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了五部VBA专门教程,回向给需要学习的朋友:

第一套:VBA代码解决方案 是VBA中各个知识点的讲解,覆盖绝大多数的VBA知识点,初学必备;

第二套:VBA数据库解决方案 数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作。

第三套:VBA数组与字典解决方案 数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习。

第四套:VBA代码解决方案之视频 是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。

第五套:VBA中类的解读和利用 这是一部高级教程,讲解类的虚无与肉身的度化,可以对促进自己理论的提高。

学习的过程也是修心的过程,修一个平静的心。在代码的世界中,心平静了,心情好了,身体自然而然就好。心静则正,内心里没有那么多邪知邪见,也就没有那么多妄想。在平静中积累自己的财富。我的上述教程是我多的经验的传递,大家可以根据1,3,2,5或者是4,3,2,5的顺序逐渐深入的逐渐学习。可以WeChat: NZ9668




最后将一阙词送给致力于VBA学习的朋友:


浮云掠过,暗语无声,

唯有清风,惊了梦中啼莺。

望星,疏移北斗,

奈将往事雁同行。

阡陌人,昏灯明暗,忍顾长亭。

多少VBA人,

暗夜中,悄声寻梦,盼却天明。

怎无凭!



分享成果,随喜正能量

聚圣源ok老板娘风采的近义词上阳赋剧情介绍海南新闻在线巴西烤肉加盟狗宝宝2018起名大全sitelink农产品店铺名字起名单人旁起名字tiktok公布起诉书细节狱锁狂龙2world下载机器人总动员国语版晋起名的寓意英语 商标 起名香河别墅姓方女孩起名字大全beyondcompare侠盗5杨姓起名sw269孟姓起名女孩宪法宣誓誓词阴阳师ssr画符抽卡技巧屈楚萧家暴事件神反转51job.com程字取名起名大全女孩属鼠的起名字宜忌台媒:解放军向南海发射两枚导弹车队起名淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化