VBA中实现类查询的思路分析

【分享成果,随喜正能量】得失各参半,才是人生的本质,人活在世间,若是处处想要的太多,心就会疲惫不堪。想要如愿以偿,必先舍得,得到的同时,一定会有失去,失去的同时,或许亦有得到。人真正的快乐无非是,让自己能够喜乐平安地活着,学会在取舍与获得之间,寻求到最佳平衡点,自在坦然地度过余生。

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

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

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是第23讲:VBA中实现类查询的思路分析


第二十三讲把源数据的值赋给类,然后利用类完成查找的方案-1

世界上越是简单的事物越是相通的。越简单,就越容易理解,我们在考虑复杂的事物时,如果难以下手,就从简单出发。降维思考就是如此。我们在第23讲到27讲中仍将结合理论把类的知识再一次展示给大家,让大家领略一下类的虚无与无穷的变换。

1实现查询的实际场景

今日要给大家讲解的是数据的查询。数据的查询对于VBA来说,可以用各种方案,可以直接的循环匹配,可以用数据库,可以用字典,今日我们讲解用类的知识来实现。如下面的数据:

如上图,在A到D的区域是数据源,对于每个序号,对应着数据1,数据2,数据3三个数据。在绿色区域,我们要根据L列的序号,把对应的数据填到M列到N列。

当然实现的方法可以用字典和数据库查找。这些方法或许也是较好的方案,不过,我们今日要用类的方案去探讨上述问题的解决。

2实现场景需求的思路分析

思路分析:我们把数据源区域中的各个数据作为一个类的属性来对应,这样,在L列当我们对某个单元格进行选择时,可以根据类属性的不同从而完成对数据1,数据2,数据3的对应查找.

思路建立起来了,如何能完成这个工程呢?不要急,我们一点点的设计,然后再加以优化,我力争用最简单的语言完成我的我的讲解,让大家看清类的本质,并利用它,把这一思想利用到自己的工作之中去.

3mydyg类的构建过程

下面我们来构建类,这是一个思想构思的过程,就如同是佛主下达了取经的佛旨,这是一个虚无的过程,要建立规则,也就是魂,下面的代码构建了一个mydyg的类:

PrivaterngsA

PrivaterngsB

PrivaterngsC

PublicTJ

PropertySetDYGA(rngAsRange)

Ifrng=TJThen

rngsA=Cells(,2)

rngsB=Cells(,3)

rngsC=Cells(,4)

If

Property

PropertyGetQSA()

QSA=rngsA

Property

PropertyGetQSB()

QSB=rngsB

Property

PropertyGetQSC()

QSC=rngsC

Property

咋看上面的代码,仿佛是天书一样,没关系,我们一步一步的把类的内容展示给大家:

在之前的讲解中讲过get过程和set过程可以对类属性进行设置和读取,其中

PropertyGet返回属性的值;

PropertyLet设置属性的值;

PropertySet设置对象属性的值(即:该属性含有对象引用)。

①PropertyGet过程提供了属性读功能:当标准模块中的代码读取对象的属性时,便会触发存在的PropertyGet过程.

②PropertyLet(或者set)过程提供了属性写功能:当标准模块中的代码写入对象属性时,便会触发存在的PropertyLet过程.

在上述代码中我们建立了类mydyg的五个属性:

1)TJ属性,这个属性是一个中间值,用于判断的条件,这个中间值是从标准模块中传递过来的,值是Cells(,1)

2)DYGA属性,这个属性用的是PropertySetDYGA(rngAsRange),可以看出,这是属性是可以进行赋值的,在赋值的过程中,用到了对TJ的判定,

Ifrng=TJThen

rngsA=Cells(,2)

rngsB=Cells(,3)

rngsC=Cells(,4)

If

上述的语句中,利用了一个判定条件,当rng=TJ时将完成3个变量的赋值。

3)QSA属性,这个属性是实现Cells(,2)的值。在类模块中用于存储这个属性的变量(宿主)是rngsA,这点的理解十分重要,我们在代码

PropertyGetQSA()

QSA=rngsA

Property

利用了QSA=rngsA进行了读取数据.

4)QSB属性,这个属性同上面的QSA,实现的是Cells(,3)的值,在类模块中存储这个属性的变量(宿主)是rngsB:

PropertyGetQSB()

QSB=rngsB

Property

5)QSC属性,这个属性同上面的QSA\QSB\QSC,实现的是Cells(,4)的值,在类模块中存储这个属性的变量(宿主)是rngsC:

PropertyGetQSC()

QSC=rngsC

Property

我们可以看出,用于利用了上面的五个属性值,可以将数据源的五个数值可以变成类的属性值,这样就可以在查找时利用了。

那么如何完成查找的过程呢?下讲继续。

今日内容回向:

类的五个属性各自的作用是什么?

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

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

版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。

相关推荐