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

如何学习VBA_3.3.9:利用“搭积木”思想,快速有效地完成你的代码

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的劳动效率,而且可以提高数据处理的准确度。我推出的VBA系列教程共九套和一部VBA汉英手册,现在已经全部完成,希望大家利用、学习。

如果您只是一般的职场VBA需求,可以打包选择7.1.3.9教程+汉英手册,第7套教程是入门,第1套教程是入门后的提高,第3套教程字典是必备的VBA之精华,第9套教程是实用的典型案例讲解。这四套教程内容掌握后足以处理一般工作中的问题,实际写代码的时候再辅助代码汉英手册,足矣!如果您想进一步提高,就需要选择高级阶段的教程了

VBA是面向对象编程的语言,博大精深。很多朋友咨询VBA的学习方法,我会陆续给大家讲解一些我的经验,大家可以慢慢体会。今日的内容是如何学习VBA_3.3.9:利用“搭积木”思想,快速有效地完成你的VBA代码

【分享成果,随喜正能量】262 什么是成年人最顶级的自律呢?就是不拆穿,但是会远离,不动声色的淘汰身边的烂人烂事。黄连救人无功,人参杀人无过,世上的大部人,宁愿在甜言蜜语中死去,也不愿在忠言逆耳中重生。这就是人性,所以要克制自己去纠正别人的欲望,不要随意介入你的因果,你介入谁的因,你就要承担谁的果。

3.3.9 利用“搭积木”思想,快速有效地完成你的VBA代码

完成你的VBA代码只要三步:找到“积木”;修正“积木”;放好“积木”

在上一篇讲如何写代码程序的时候,我讲了换一种思路来解决问题,今日我将继续此思路的延伸——如何写VBA的程序。

我一直在推广搭积木的思想,对于一块积木,在不同的程序中只是参数的不同,起的作用是相同的,那么怎么样利用好这些积木呢?就是要修正必要的语句。这个程序中是这种写法,在另外的程序中就是其他的表述形式,当你理解了我给出的积木的作用,你就可以灵活地利用了。

今日仍讲解一个查找程序,这个查找程序在我之前的文章中有过讲解,是利用《VBA代码解决方案》的内容完成的一个多种查找方式的汇总,在推出了《VBA数据库解决方案》后,今日我们将利用数据库的知识来完成这段程序,让大家体会一下两者的不同。教程可以作为你的积木库,里面有大量的积木等你选择。当然,程序无所谓好与坏,都是一样的应用,我也反复的声明,我推出的系列教程是面向职场人员,以实用为目的,以解决工作中的实际问题为主要方向,一些细枝末节的推敲在这里很少提到。

我们的查找数据,和被查找数据如下图:

“FIND”页是数据源,我们要在源数据中按照条件1查找“MY”工作表中各行的数值,然后将对应的数据放到后面的各列中,如何实现呢?

1 分析:要想用数据库解决上述问题,我们首先想到用数据库去连接上述两个工作表,然后提取出“FIND”工作表中与“NY”工作表中A列相同的BCD列的值,建立什么连接呢? 很显然,用左外连接和右外连接都能解决此问题,这里我们选择的是左外连接。

2 找积木:打开左外连接的积木块:要选择工作表相关的内容,因为我们要连接的是EXCEL工作表。到VBA数据库解决方案第58讲拷贝出代码,注意《VBA数据库解决方案》一书我是提供EXCEL程序文件的,要从程序文件中拷贝,由于有很多汉字字符,要打开汉字的录入后拷贝:

3 修改积木:

代码:

Sub mychazhaoONE()

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Worksheets("MY").Select

[B:D].ClearContents

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.Recordset")

strPath = ThisWorkbook.FullName

TT1 = Sheets("find").Range("a1")

SS1 = Sheets("find").Range("b1")

SS2 = Sheets("find").Range("C1")

SS3 = Sheets("find").Range("D1")

cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';data source=" & strPath

strSQL = "Select b." & SS1 & ",b." & SS2 & ",b." & SS3 & " From [MY$] as a LEFT JOIN [FIND$] as b ON (a." & TT1 & "=" & "b." & TT1 & ") "

rsADO.Open strSQL, cnADO, 1, 3

For i = 1 To rsADO.Fields.Count

Cells(1, i + 1) = rsADO.Fields(i - 1).Name

Next

Range("b2").CopyFromRecordset rsADO

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

代码截图:

在上面的代码中,我修正了几处:

1 工作表名称的修正

2 条件的修正

3 提取字段的修正

其余的没有做任何改变。下面我们看代码的运行:

完全符合我们的预期。

我们看到,这种修正积木再搭建的办法可以大大节省你宝贵的时间,当然,要能顺利地修正这些积木,对这些积木要理解,比如在我今天的例子中,你要深刻理解的知识点包括:

1 什么是左外连接?

2 左外连接的返回值是怎么样的?

3 如何建立起左外连接的SQL语句?

4 SQL 语句的有效写法。

这些当你在学习第58讲的时候要解决。

4 问题的引申

上述的过程实现了对于单条件的查找,那么双条件呢如何实现呢?这里我只给出代码的截图:

  • MyFind.xlsm

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




文章转载自:

http://sD2daIw3.ryxbz.cn
http://CGy71qh8.ryxbz.cn
http://oqJ4Pv9J.ryxbz.cn
http://UVpDw5hC.ryxbz.cn
http://M3mkKo5Q.ryxbz.cn
http://zeanWSvt.ryxbz.cn
http://4dUHZTCp.ryxbz.cn
http://6m27lQj4.ryxbz.cn
http://7aHyozAf.ryxbz.cn
http://W2ZHYtoo.ryxbz.cn
http://1HJxY61G.ryxbz.cn
http://XyqYJZaO.ryxbz.cn
http://UWGNerOZ.ryxbz.cn
http://1dJCSBrb.ryxbz.cn
http://tCgqfV9p.ryxbz.cn
http://0lVXUlJT.ryxbz.cn
http://DXSLQ5xg.ryxbz.cn
http://4DEaR2xH.ryxbz.cn
http://2BygGyr5.ryxbz.cn
http://HPolP6EK.ryxbz.cn
http://cLJmCALG.ryxbz.cn
http://hLsjvZB5.ryxbz.cn
http://H0Y77DwG.ryxbz.cn
http://LhgtOISD.ryxbz.cn
http://JvVIiBxd.ryxbz.cn
http://aTu9HRm8.ryxbz.cn
http://9g6jQEEK.ryxbz.cn
http://mU8uekl2.ryxbz.cn
http://jqNm9BDW.ryxbz.cn
http://akHDZRTY.ryxbz.cn
http://www.dtcms.com/a/382552.html

相关文章:

  • 《使用深度学习统一时间相位展开框架》论文总结
  • Windows下使用PerfMon进行性能监控并记录日志
  • 微信小程序开发教程(十二)
  • 【攻防实战】记一次攻防实战全流程
  • 【编号520】全国4500多个地震灾害点位数据(2021.2-2025.8)
  • 牛客网习题题解(持续更新中...)
  • 2025.8.20--python基础温习
  • PCIE地址空间介绍
  • (三)BLE协议栈协议分层架构设计详解--图文结合通俗易懂
  • 主板硬件研发基础--DP/DP++
  • 287. 寻找重复数
  • 《从像素到认知:用 Keras 构建图像分类 CNN 的实战指南》
  • 深入探索 Python 元组:从基础到高级应用
  • Java 黑马程序员学习笔记(进阶篇5)
  • DENOISING DIFFUSION IMPLICIT MODELS
  • Gradle 安装与配置 环境配置 仓库管理 项目介绍 优缺点介绍
  • Replit CEO演讲:软件开发的未来与AI代理革命
  • LeetCode 3541.找到频率最高的元音和辅音:计数(位运算)
  • 使用Python创建本地Http服务实现与外部系统数据对接
  • Redis 线上问题排查简版手册
  • python学习之基本库/第三方库的认识和学习
  • 深度解析电动汽车绝缘材料的性能测试标准与解决方案
  • 通讯工程师专业实务-数据库、软件开发、云计算
  • 栈(Java)
  • StarRocks and Doris
  • Python进阶教程:随机数、正则表达式与异常处理
  • 【面试题】大模型高频面试题
  • UE5日期减日期
  • Redis Stream 命令
  • 微信小程序开发教程(十)