接上讲内容)
在前面的两讲中我们讲了类和标准模块的内容,这一讲,我们来讲具体的运行过程.对于此时而言,团队已经组建完成,方针也已经确定,剩下的内容就将是团队的运作。
我们点击下面截图的运行按钮(把基础数据的值付给类,然后利用类完成查找的方案):
执行过程的解析:
① 标准模块将在“L”列建立一个循环,循环的条件是Cells(i, "l") <> ""。
Do WhileCells(i, "l") <> ""
Set tes = New mydyg
tes.TJ = Cells(i, "L")
For Each rn In Range("a1",Cells(rows.Count, 1).End(xlUp))
Set tes.DYGA = rn
Next
②在上述循环中Set tes = Newmydyg 将赋值一个类tes,这个类是mydyg。
③将tes的TJ属性进行赋值为L列单元格的值
④给tes类的DYGA属性进行赋值,赋值的时候将遍历所有A列的单元格,将单元格赋给DYGA,但这不是目的,目的是当这个单元格作为一个参数传递到类的赋值语句时,会做一个判断但这个值等于TJ时将有变量rngsA,rngsB. RngsC,三个变量的赋值,这才是关键的,这三个变量是类三个属性值的“宿主”,代码如下;
PropertySet DYGA(rng As Range)
If rng = TJThen
rngsA= Cells(rng.Row, 2)
rngsB= Cells(rng.Row, 3)
rngsC= Cells(rng.Row, 4)
End If
End Property
⑤ 主程序单元格值的回填。在上面的各项工作结束后。主程序的过程将利用上面的数据进行值的回填
Cells(i, "m") = tes.QSA
Cells(i, "N") = tes.QSB
Cells(i, "O") = tes.QSC
上述三条语句就是值的回填过程,将tes的三个属性值填给M,N,0三列的单元格中。
取得tes.QSA,是利用下面的GET语句获得,此过程非常的简单,就是将“宿主”rngsA中的值传递给QSA.
Property Get QSA()
QSA = rngsA
End Property
取得tes.QSB,是利用下面的GET语句获得,此过程非常的简单,就是将“宿主”rngsB中的值传递给QSB.
Property Get QSB()
QSB = rngsB
End Property
取得tes.QSC,是利用下面的GET语句获得,此过程非常的简单,就是将“宿主”rngsC中的值传递给QSC.
Property Get QSC()
QSC = rngsC
End Property
经过上述的各个环节,我们需要的结果就实现了。看下面的运行结果:
我们再次回顾一下上述利用类,实现我们目的的过程。
1 我们的目的是按照L列的值在A列中进行查找,找到后将对应的几个数组回填给之后的M,N,O列。
2 为了实现我们的目的,先搭建了一个mydyg类。这个类的作用是当我们传递给他一个单元格时,会做出判断,当是我们需要的指向时会给类的属性赋值。这个类是纯粹虚无的,只能给人以精神的指导,是一个“魂”。他需要借助一个实体的对象来实现。
3 在主程序中我们适时建立了一个这样的对象tes,将上述类的灵魂赋给这个对象,这时的tes就不再是灵魂了,而是可以为我们使用的具体对象了。当我们给这个对象赋给TJ值的时候就可以输出对应的我们需要的值了。
整个过程就是一个灵魂到肉身的转变,只有灵魂时不能完成任何的工作,只有具有了肉身才能完成相应的责任工作。
我们仍旧回到我们我们的目的,这种实现方法中在类内部依靠传递进来的单元格进行判断时,是否还有还有其他的方案呢?是的,在下一讲中我们继续这个话题的讲解。
随笔:在取代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的顺序逐渐深入的学习和利用。
最后将一阙词送给致力于VBA学习的朋友:浮云掠过,暗语无声,唯有清风,惊了梦中啼莺。望星,疏移北斗,奈将往事雁同行。阡陌人,昏灯明暗,忍顾长亭,多少VBA人,暗夜中,悄声寻梦,盼却天明,怎无凭!
分享成果,随喜正能量