我给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://www.pswp.cn/bicheng/98218.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/98218.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/98218.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSP程序设计之输入/输出对象 — response对象

response对象1.概述2.实例:response对象方法运用(1)实例一:页面自动刷新(2)实例二:实现页面重定向,具体的代码(3)综合实例:实现登录并记录用户名1…

Redis 事件驱动框架(ae.c_ae.h)深度解析

Redis 事件驱动框架(ae.c/ae.h)深度解析 之前咱们用 “超市收银员” 的例子,简单看懂了 ae 模块是 Redis 的 “多任务神器”。现在咱们再往深走一层,不用复杂代码,只拆它的 “核心运作逻辑”—— 搞懂它怎么做到 “一个…

[能源化工] 面向锂电池RUL预测的开源项目全景速览

锂离子电池是新能源汽车、储能系统及便携式电子设备的核心能源部件,其剩余使用寿命(Remaining Useful Life,RUL)的准确预测直接关系到设备运行安全、维护成本优化和能源效率提升。RUL预测算法能够提前量化电池剩余可用时间&#x…

PEFT QLora Deepspeed Zero Stage 3 Offload Trainning

使用 accelerate deepspeed zero stage 3 offload 进行 sft trainning 的自动设备映射: GPU 训练计算 CPU 存储 run_peft_qlora_deepspeed_stage3.sh #!/bin/bashexport MAX_JOBS4 export OMP_NUM_THREADS4 export disable_exllamaTrue export CUDA_VISIBLE_DEVICES0,1 expor…

JAVA上门家政维修服务系统源码微信小程序+微信公众号+APP+H5

一、功能介绍用户端:精准分类、支持家政、维修、万能服务、一口价、报价、线上、各类家政服务、优惠专区、师傅入驻、商家入驻、我的需求、补费明细、我的投诉;师傅端:接单池、消息通知、接单管理、今日订单、师傅入驻、我的钱包、实名认证&a…

GCKontrol对嵌入式设备FPGA设计流程的高效优化

1 前言FPGA(Field-Programmable Gate Array,现场可编程逻辑门阵列)是一种可编程的半导体器件,因其硬件可重构性、硬件并行计算能力、低延迟和实时性的优势,广泛应用于数字电路设计、原型验证和系统加速等领域。但开发…

DBAPI免费版对比apiSQL免费版

DBAPI简介 零代码开发api服务,只需编写sql,就可以生成http api服务。支持api动态创建,兼容多种数据库。 适用于BI报表、数据可视化大屏的后端接口快速开发。 旨在为企业数据服务的发布提供完整解决方案 一、DBAPI免费版本支持1个数据源连接支…

CTFHub SSRF通关笔记8:数字IP Bypass 原理详解与渗透实战

目录 一、SSRF 二、数字IP原理 1、IP多进制 (1)十进制整数格式 (Dword / 长整数格式) (2)八进制格式 (Octal IP) (3)十六进制格式 (Hex IP) 2、SSRF绕过 三、渗透实战 1、打开靶场 2、尝试127.0.…

C++中双引号和单引号的区别(全面分析)

我在刷算法题的时候经常遇到,用了 出现警告或者使用" "直接报错,尤其是在字符串部分(py玩家后遗症/(ㄒoㄒ)/~~)在详细了解后总结一下加强记忆。 总的来说在 C 中,双引号 "" 和单引号 是完全不同…

Ubuntu20.04仿真 |iris四旋翼添加云台相机详述

申明: 1、本人使用的是Ubuntu20.04ros1gazeboxtdronepx4的仿真组合 2、为了使传感器模型和飞机模型解耦合,实现不同平台对传感器可直接调用,本系列博文涉及的所有传感器均不直接添加在相应平台的sdf当中,而是通过编写xxx_joint.…

《人工智能AI之机器学习基石》系列 第 16 篇:关联规则与数据挖掘——“啤酒与尿布”传奇背后的增长秘密

《人工智能AI之机器学习基石》⑯ 专栏核心理念: 用通俗语言讲清楚机器学习的核心原理,强调“洞察+ 技术理解 + 应用连接”,构建一个完整的、富有启发性的知识体系。 引言:藏在购物车里的“读心术” 朋友们,欢迎回到我们的AI基石之旅。 在过去的两次探索中,我们深入…

Spring Boot 的自动配置原理

Spring Boot 的自动配置是其 "约定大于配置" 理念的核心实现,它能自动配置 Spring 应用所需的各种组件,大幅减少手动配置。下面从核心注解、加载流程、条件过滤等方面详细讲解其原理,并结合关键源码说明。一、自动配置的入口&#…

谷歌云平台(Google Cloud Platform, GCP)介绍(全球领先的云计算服务平台,为企业和开发者提供包括计算、存储、数据分析、人工智能、机器学习、网络和安全等在内的全面云服务)

文章目录**1. GCP的核心优势****1.1 全球领先的基础设施****1.2 强大的数据分析和人工智能能力****1.3 卓越的安全性和合规性****1.4 灵活的定价模式****2. GCP的主要服务****2.1 计算服务****2.2 存储和数据库****2.3 网络服务****2.4 人工智能与大数据****2.5 安全与管理工具…

RISC-V异常机制和异常定位

不少人在调试RISC-V core时,面对异常的出现不知所措,不知道如何定位代码问题。这里将从RISC-V异常机制以及几个异常实例学习下。 1 异常机制 1.1 什么是异常 异常是软件程序员不得不要深入了解的,首先在学习异常机制前,对异常要…

c++中导出函数调用约定为__stdcall类型函数并指定导出函数名称

开发环境在Visual studio 2022版本下,为防止编译器重命名函数名称(会加上8等等乱七八糟的东西),我们对函数名称进行指定:一、新建.def文件,名称须与dll名称相同,并放在与cpp文件相同文件夹下&am…

Vision Transformer (ViT) :Transformer在computer vision领域的应用(二)

METHOD,论文主要部分 In model design we follow the original Transformer (Vaswani et al., 2017) as closely as possible. An advantage of this intentionally simple setup is that scalable NLP Transformer architectures – and their efficient implementations –…

AI 论文周报丨红队测试语言模型/多视角 3D 点追踪方法/蛋白质表示学习框架/密码学漏洞检测新框架……

近年来,已有若干方法尝试从单目视频实现 3D 点跟踪,然而由于在遮挡和复杂运动等挑战性场景中难以准确估计 3D 信息,这些方法的性能仍难以满足实际应用对高精度与鲁棒性的要求。 基于此,苏黎世联邦理工学院、卡内基梅隆大学联合提出…

STM32 通过USB的Mass Storage Class读写挂载的SD卡出现卡死问题

问题描述:使用stm32cubemx生成的sdio和usb Mass Storage Class的代码后,在USB_DEVICE\App\usbd_storage_if.c文件里面的接口调用以下函数出现卡死问题: SD_Driver.disk_initialize(0); SD_Driver.disk_read(lun, buf, blk_addr, blk_len) SD_…

Go语言中 error 接口与自定义错误类型的深入解析

在 Go 语言开发中,我们经常需要处理各种错误情况。Go 语言通过 error 接口提供了一套简洁而强大的错误处理机制。然而,当涉及到自定义错误类型时,许多开发者会遇到一些令人困惑的问题。本文将通过一个实际案例来深入探讨这个问题。 问题背景 …

字幕编辑工具推荐,Subtitle Edit v4.0.13发布:增强语音识别+优化翻译功能

大家好呀,不知道大家有没有做自媒体相关工作的呢,你们是不是也觉得剪辑视频时最头疼的往往不是画面而是字幕,时间轴对不上、格式不兼容、需要手动翻译,这些琐碎工作消耗的精力甚至超过剪辑本身。 当你试遍各种在线工具却发现要么…