《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程富腾优配,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。
类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入,有必要理解这些抽象的理论知识。对象,类,过程,方法,属性,事件,接口,接口如何实现等等。掌握了这些理论,不仅对于VBA这种寄生语言的实质有所深入的理解,也对自然界的很多事物将同样有所感悟。目前,这套教程程序文件已经通过32位,64位两种office系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA中类的解读及应用第二十三讲:把源数据赋给类,然后利用类完成查找的方案-1
【分享成果,随喜正能量】133 困境总是因为自我的执着,自我的傲慢,所以才把困境弄得难以处理。如果能用谦虚的态度,不在人情上计较、比较,困境自然化解。。
展开剩余87%第二十三讲 把源数据赋给类,然后利用类完成查找的方案-1世界上越是简单的事物越是相通的。越简单,就越容易理解,我们在考虑复杂的事物时,如果难以下手,就从简单出发。降维思考就是如此。我们在第23讲到27讲中仍将结合理论把类的知识再一次展示给大家,让大家领略一下类的虚无与无穷的变换。
1 实现查询的实际场景今日要给大家讲解的是数据的查询。数据的查询对于VBA来说,可以用各种方案,可以直接的循环匹配,可以用数据库,可以用字典,今日我们讲解用类的知识来实现。如下面的数据:
如上图,在A到D的区域是数据源,对于每个序号,对应着数据1,数据2,数据3 三个数据。在绿色区域,我们要根据L列的序号,把对应的数据填到M列到N列。
当然实现的方法可以用字典和数据库查找。这些方法或许也是较好的方案,不过,我们今日要用类的方案去探讨上述问题的解决。
2 实现场景需求的思路分析思路分析:我们把数据源区域中的各个数据作为一个类的属性来对应,这样,对应于L列的值,可以根据类属性的不同从而完成对数据1,数据2,数据3的对应查找.
思路建立起来了,如何能完成这个工程呢?不要急,我们一点点的设计,然后再加以优化,我力争用最简单的语言完成我的讲解,让大家看清类的本质,并利用它,把这一思想利用到自己的工作之中去.
3 mydyg类的构建过程下面我们来构建类,这是一个思想构思的过程,就如同是佛主下达了取经的佛旨,这是一个虚无的过程,要建立规则,也就是魂,下面的代码构建了一个mydyg的类:
Private rngsA
Private rngsB
Private rngsC
Public TJ
Property Set DYGA(rng As Range)
If rng = TJ Then富腾优配
rngsA = Cells(rng.Row, 2)
rngsB = Cells(rng.Row, 3)
rngsC = Cells(rng.Row, 4)
End If
End Property
Property Get QSA()
QSA = rngsA
End Property
Property Get QSB()
QSB = rngsB
End Property
Property Get QSC()
QSC = rngsC
End Property
代码截图:
咋看上面的代码,仿佛是天书一样,没关系,我们一步一步的把类的内容展示给大家:
在之前的讲解中讲过get过程和set过程可以对类属性进行设置和读取富腾优配,其中
Property Get 返回属性的值;
Property Let 设置属性的值;
Property Set 设置对象属性的值(即:该属性含有对象引用)。
① Property Get过程提供了属性读功能: 当标准模块中的代码读取对象的属性时,便会触发存在的Property Get过程.
② Property Let(或者set)过程提供了属性写功能:当标准模块中的代码写入对象属性时,便会触发存在的Property Let过程.
在上述代码中我们建立了类mydyg的五个属性:
1) TJ属性,这个属性是一个中间值,用于判断的条件,这个中间值是从标准模块中传递过来的,值是Cells(rng.Row, 1)
2) DYGA属性,这个属性用的是Property Set DYGA(rng As Range),可以看出,这是属性是可以进行赋值的,在赋值的过程中,用到了对TJ的判定,
If rng = TJ Then
rngsA = Cells(rng.Row, 2)
rngsB = Cells(rng.Row, 3)
rngsC = Cells(rng.Row, 4)
End If
上述的语句中,利用了一个判定条件,当rng = TJ时将完成3个变量的赋值。
3) QSA属性,这个属性是实现Cells(rng.Row, 2)的值。在类模块中用于存储这个属性的变量(宿主)是rngsA,这点的理解十分重要,我们在代码
Property Get QSA()
QSA = rngsA
End Property
利用了QSA = rngsA进行了读取数据.
4) QSB属性,这个属性同上面的QSA,实现的是Cells(rng.Row, 3)的值,在类模块中存储这个属性的变量(宿主)是rngsB:
Property Get QSB()
QSB = rngsB
End Property
5) QSC 属性,这个属性同上面的QSA\QSB\QSC,实现的是Cells(rng.Row, 4)的值,在类模块中存储这个属性的变量(宿主)是rngsC:
Property Get QSC()
QSC = rngsC
End Property
我们可以看出,用于利用了上面的五个属性值,可以将数据源的五个数值可以变成类的属性值,这样就可以在查找时利用了。
那么如何完成查找的过程呢?下讲继续。
今日内容回向:
类的五个属性各自的作用是什么?
本讲内容参考程序文件:VBA-CLASS(1-28).xlsm
本讲内容参考程序文件:VBA-CLASS(1-28).xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
发布于:河北省易配网提示:文章来自网络,不代表本站观点。