当前位置: 首页 > news >正文

VBA中类的解读及应用第二十四讲:把源数据赋给类利用类完成查找

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

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

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA中类的解读及应用第二十四讲:把源数据赋给类,然后利用类完成查找的方案-2

【分享成果,随喜正能量】163 活得通透的人,没有特别想维持的关系,也没有特别想要的东西,走近的人不抗拒,离开的人不强留,就连吃亏也懒得计较。

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

4 实现查询场景的标准模块代码

在上一讲中,我们讲了实现数据查找过程中类模块部分,今日我们继续讲解标准模块的代码。

根据上一讲的讲解,我们可以分析出,在标准模块中,要实现将查找区域的L列单元格的值传递给类模块,同时要实现显示这个单元格的其他属性,并将这些属性的值填到M,N,O列。下面我们看代码:

Sub mynzclass23_27_1()

Dim tes As mydyg

i = 1

Do While Cells(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

Cells(i, "m") = tes.QSA

Cells(i, "N") = tes.QSB

Cells(i, "O") = tes.QSC

i = i + 1

Set tes = Nothing

Loop

End Sub

代码截图:

5 标准模块的代码解读

代码的解读:上面的过程代码内容比较少,但实现的功能还是比较多的,我们来讲解一下代码的执行过程:

在代码的执行过程中首先要声明tes为我们命名的类mydyg。在i列建立一个循环,对于其中的每个单元格,首先将这个单元格关联上类mydyg的DYGA 属性,在关联的同时,在类模块中将执行下面的属性赋值过程:

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

由于此时TJ属性是已经赋值过的是Cells(i, "L")的值,这个时候这个值判断将作为一个判断的依据,将给出rngsA, rngsB,rngsC三个值,这三个值在类模块中作为变量(宿主)进行存储。

当代码执行到:

Cells(i, "m") = tes.QSA

Cells(i, "N") = tes.QSB

Cells(i, "O") = tes.QSC

的时候,将显示tes的三个属性QSA,QSB,QSC ,是如何显示的呢?当代码执行到tes.QSA的时候将读取属性的值,读取属性值的时候将执行下面的代码:
Property Get QSA()

QSA = rngsA

End Property

代码的意思是将QSA = rngsA,也就是说rngsA将起到一个中间变量的作用,就是存储QSA的属性值(我们称之为宿主)。

在上面两讲中,我讲了类模块及标准模块的代码作用。两个模块相互关联,构成了一个整体,类模块中完成了属性的定义及赋值、提取数值的动作,在标准模块中,将对象关联上类,让对象具有类的属性。

上述每个单元格:

For Each rn In Range("a1", Cells(rows.Count, 1).End(xlUp))

Set tes.DYGA = rn

Next

单元格还是单元格,但赋予类的性质后,就会平添了一种魂的使命。原先的“猪悟能”就个体而言还是这个个体,但“唐三藏”大师给他赋值猪八戒后,就有了取经的“魂”。这个魂是赋值后的新生,虽然个体没有改变,还是那个实体,但“魂”已经发生了本质的改变。这就是神奇的类。

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

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



相关文章:

  • 慢SQL调优(二):大表查询
  • Python有哪些经典的常用库?(第一期)
  • 【MySQL】 约束
  • linux系统--iptables实战案例
  • 主流Agent开发平台学习笔记:扣子罗盘coze loop 功能拆解
  • 【LLMs篇】13:LLaDA—大型语言扩散模型
  • Java异步编程难题拆解技术
  • 计算机系统结构-第五章-目录式协议
  • 修复与升级suse linux
  • 1950-2009年咸海测深特征数据
  • leetcode 二叉搜索树中第k小的元素 java
  • 小白初学SpringBoot记录
  • Inno Setup 脚本中常用术语释义
  • 一站式直播工具:助力内容创作者高效开启直播新时代
  • SQL语法
  • RAMSUN分享全新超值型MM32F0050系列MCU
  • Java基础原理与面试高频考点
  • Python绘图库及图像类型之基础图表
  • 告别延迟,拥抱速度:存储加速仿真应用的解决方案【1】
  • Gateway 搭建
  • 汕头多语种网站制作/沪深300指数
  • 咸阳网站建设公司/怎么开发自己的网站
  • 专业网站建设好不好/建网站费用
  • 张家港普通网站建设/如何交换友情链接
  • 做商业网站需要注册公司吗/搜索引擎seo优化怎么做
  • 深业资本有限公司网站建设/谷歌海外推广