如何學習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://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發布:增強語音識別+優化翻譯功能

大家好呀,不知道大家有沒有做自媒體相關工作的呢,你們是不是也覺得剪輯視頻時最頭疼的往往不是畫面而是字幕,時間軸對不上、格式不兼容、需要手動翻譯,這些瑣碎工作消耗的精力甚至超過剪輯本身。 當你試遍各種在線工具卻發現要么…