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

VBA中类的解读及应用第二十七讲:利用类完成查找的方案-5

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

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

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

【分享成果,随喜正能量】253 老人言:“拆穿多没意思,年纪大了就喜欢看别人演戏,精彩的地方我还可以给你鼓掌。”心态,是命运的舵手,虽然不是人生的全部,但能左右人生的全部。人生是一场修行,修炼好自己的内心,才能万事从容,成为最后的赢家。。

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

各位学员好,我们今日继续上一讲的内容的讲解。在上一讲中我们讲了实现类模块进行查找另一个方案中的类模块的内容,今日我们讲解标准模块的内容。

11 标准模块中代码

类模块构建了一个框架,也就是规划了一个虚无缥缈的“魂”,在标准模块中,我们要给这个“魂”赋给“肉身”对象,让这个魂在肉身上实现“活”起来。下面我们先看看标准模块的代码:

Sub mynzclass23_27_2()

Dim tes As MYNEWDYG

Set tes = New MYNEWDYG

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

Set tes.DYGB = rn

Next

i = 1

Do While Cells(i, "l") <> ""

tes.TJ = Cells(i, "L")

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

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

i = i + 1

Loop

End Sub

代码的截图:

12 标准模块代码的解读

代码解析:上述代码首先将MYNEWDYG类赋给了tes,让tes具有类MYNEWDYG的各种属性及功能,然后我们要首先执行一次遍历,将Range("a1", Cells(rows.Count, 1).End(xlUp))这个区域的单元格传递给tes的DYGB属性,大家注意,这里的传递相对于第23到25讲的方案提前了,在第23到25讲中这个传递是发生在每次的循环体之中。传递后,之后代码的思路是和第23到25讲中的思路是一致的。下面讲解一下具体的实现过程。

1) 声明类的对象,并将类赋给这个对象。

Dim tes As MYNEWDYG

Set tes = New MYNEWDYG

声明后用set赋值是最为基本的类的应用操作。

2) 将源数据区域的单元格关联到tes对象的属性,这里用的是遍历循环操作。

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

Set tes.DYGB = rn

Next

数据关联后会将上述数据内容存放在类的数组中备用。

3) 在L列建立一个循环,并将单元格赋值给tes的TJ属性。在给TJ属性赋值的时候,类模块中会根据TJ属性的值自动给出QSA和QSB的属性值,这个功能完全是在类模块中实现的,我们在主程序过程中只是告诉给TES这个对象将要传递进去的值即可。

Do While Cells(i, "l") <> ""

tes.TJ = Cells(i, "L")

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

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

i = i + 1

Loop

上述过程完成后会将QSA和QSB的属性值分别回填到M列和N列。从而达到我们查找的目的。

13 改进后的代码运行

下面我们看看运行的结果:

在上述代码中,由于我只给出了两列的值的查找,所以数据3那列是空白的。

在最近的5讲中,我讲了利用类模块完成查找的过程,共讲了两种方案。这两种方案中,后者利用了在类模块中先把源数据进行存储,理论上可以节约时间。

对于初识类的朋友,到这里基本上了解了类的一些基本的概念及应用上的基本技巧,这之后的章节中我仍将就类的知识与应用作深入的讲解。

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

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



http://www.xdnf.cn/news/19895.html

相关文章:

  • SVT-AV1 svt_aom_motion_estimation_kernel 函数分析
  • 详细学习计划
  • 百度前端社招面经
  • 云手机运行是否消耗自身流量?
  • Docker(④Shell脚本)
  • 【RNN-LSTM-GRU】第五篇 序列模型实战指南:从选型到优化与前沿探索
  • 应对反爬:使用Selenium模拟浏览器抓取12306动态旅游产品
  • 40,.Ansible角色(roles)
  • 具身智能多模态感知与场景理解:视觉探索
  • 如何本地编译servicecomb-java-chassis
  • Focal Loss
  • Elasticsearch 8 中 Nested 数据类型的使用方法
  • 【文献解读】ceRNA机制研究经典思路
  • Spring Boot项目中MySQL索引失效的常见场景与解决方案
  • 从群体偏好到解构对齐:大模型强化学习从GRPO到DAPO的“认知”进化
  • 【高并发内存池】四、中心缓存的设计
  • 疯狂星期四文案网第60天运营日记
  • GEO排名优化效益分析:为何AI搜索优化服务是当下性价比最高的流量投资?
  • 学习资料1(粗略版)
  • Web详解
  • WebSocket简述与网络知识回顾
  • Ubuntu镜像源配置
  • Kafka如何保证高可用
  • EasyExcel:阿里开源的高效 Excel 处理工具,轻松解决 POI 内存溢出问题
  • 【Unity知识分享】Unity实现全局监听键鼠调用
  • ZooKeeper核心ZAB选举核心逻辑(大白话版)
  • Anaconda3 2025软件下载及安装教程
  • LangGraph(一):入门从0到1(零基础)
  • 使用Qt Charts实现高效多系列数据可视化
  • RabbitMQ模型详解与常见问题