VBA中類的解讀及應用第二十五講:把源數據賦給類利用類完成查找

《VBA中類的解讀及應用》教程【10165646】是我推出的第五套教程,目前已經是第一版修訂了。這套教程定位于最高級,是學完初級,中級后的教程。

類,是非常抽象的,更具研究的價值。隨著我們學習、應用VBA的深入,有必要理解這些抽象的理論知識。對象,類,過程,方法,屬性,事件,接口,接口如何實現等等。掌握了這些理論,不僅對于VBA這種寄生語言的實質有所深入的理解,也對自然界的很多事物將同樣有所感悟。目前,這套教程程序文件已經通過32位,64位兩種office系統測試。

這套教程共兩冊,八十四講,今后一段時間會給大家陸續推出修訂后的教程內容。今日的內容是:VBA中類的解讀及應用第二十五講:把源數據賦給類,然后利用類完成查找的方案-4

【分享成果,隨喜正能量】223 善良的人,總是有福。利己則生,利他則久。心存善良的幫助他人,不是一時興起,而是要堅持不懈的從實際出發,看到他人所需,切實的幫助到他人。

第二十六講 把源數據賦給類,然后利用類完成查找的方案-4

大家好,今日我們繼續講解利用類來進行查找的方案。在之前的第23到25講中我們講了建立一個類,這個類的功能是根據輸入的內容定位要返回的內容,當我們把這個類的魂賦給某個對象后就可以實現查找了。

8 mydyg類的改進分析

在上面的三講中利用的類是mydyg,在利用輸入的單元格進行判斷時,對于每次輸入的值都要進行相同重復的數據讀取:

那么有沒有辦法只進行一次數據的讀取,然后在讀取的數據中進行提取必要的值呢?如果這種方案能實現的話可以大大的提高程序的運行效率。我今日就來講解這種一次讀取數據的方案。當然,也是利用的類模塊。這種方案需要用到動態數組了。

9 類MYNEWDYG的構建

我們先來看類模塊的過程:我們首先建立一個類模塊MYNEWDYG,下面是相應的代碼:

Private rngsA

Private rngsB

Public TJ

Private A()

Property Get QSA()

For i = 1 To UBound(A())

RR = Left(A(i), InStr(A(i), "#") - 1)

If Trim(RR) = Trim(TJ) Then

rngsA = Mid(A(i), InStr(A(i), "#") + 1, InStr(A(i), "@") - InStr(A(i), "#") - 1)

Exit For

End If

Next

QSA = rngsA

End Property

Property Get QSB()

For i = 1 To UBound(A())

RR = Left(A(i), InStr(A(i), "#") - 1)

If Trim(RR) = Trim(TJ) Then

rngsB = Mid(A(i), InStr(A(i), "@") + 1, Len(A(i)) - InStr(A(i), "@"))

Exit For

End If

Next

QSB = rngsB

End Property

Property Set DYGB(rng As Range)

ReDim Preserve A(rng.Row)

A(rng.Row) = Cells(rng.Row, 1) & "#" & Cells(rng.Row, 2) & "@" & Cells(rng.Row, 3)

kk = 1

End Property

代碼的截圖:

10 類MYNEWDYG的代碼分析

下面我們分析一下類模塊的過程:這個過程中建立了類的屬性有TJ,QSA,QSB,DYGB四個屬性,這四個屬性的作用各有不同。同時在類模塊中還有兩個數據的傳遞變量rngsA和rngsB,這兩個變量是屬性QSA和QSB的“宿主”(還是用這個詞吧,比較好理解)。下面我們將就每個過程進行分析,

1) 對于傳入數據的處理

Property Set DYGB(rng As Range)

ReDim Preserve A(rng.Row)

A(rng.Row) = Cells(rng.Row, 1) & "#" & Cells(rng.Row, 2) & "@" & Cells(rng.Row, 3)

kk = 1

End Property

當有數據(單元格)輸入的時候,會將這個單元格及之后的幾個數據提取分別以"#"和"@" 進行分隔,一共分成三個部分。

2) rngsA數據的獲得

Property Get QSA()

For i = 1 To UBound(A())

RR = Left(A(i), InStr(A(i), "#") - 1)

If Trim(RR) = Trim(TJ) Then

rngsA = Mid(A(i), InStr(A(i), "#") + 1, InStr(A(i), "@") - InStr(A(i), "#") - 1)

Exit For

End If

Next

QSA = rngsA

End Property

提取rngsA數據時根據第一個字段的內容提取出相應的第二段的內容。

3) rngsB數據的獲得

Property Get QSB()

For i = 1 To UBound(A())

RR = Left(A(i), InStr(A(i), "#") - 1)

If Trim(RR) = Trim(TJ) Then

rngsB = Mid(A(i), InStr(A(i), "@") + 1, Len(A(i)) - InStr(A(i), "@"))

Exit For

End If

Next

QSB = rngsB

End Property

提取rngsB數據時根據第一個字段的內容提取出相應的第三段的內容。

我們再來回顧一下上面類模塊的作用,當輸入數據時,會把這些數據首先放到一個數組中,當提取時可以根據某個字段的內容進行有選擇的提取。

這就是類模塊,實現了一個較為完整的過程。在下一講我們會講到如何利用這個類模塊來完成我們的具體工作了。

到這里大家基本能了解類模塊應用的思路了,要首先搭建一個類,相當于要建立一個虛無的魂,再在主程序中將這個魂賦給某個具體的對象,讓這個對象去完成我們實際的工作,這或許是VBA中的機器人吧。

本講內容參考程序文件:VBA-CLASS(1-28).xlsm

我20多年的VBA實踐經驗,全部濃縮在下面的各個教程中:



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/91948.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91948.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91948.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue3核心語法進階(Hook)

Vue3 自定義 Hook:讓你的代碼像樂高一樣“可復用”!大家好,我是你們的前端小伙伴!上一篇我們聊了 Vue3 的生命周期,今天咱們繼續深入 Vue3 的核心利器——自定義 Hook(Custom Hook)。如果你已經…

工控領域協議之Modbus

Modbus 是一種通信協議,用于工業自動化領域中的設備之間的通信。它是一種串行通信協議,廣泛應用于連接不同設備、傳感器和執行器的工業控制系統。 Modbus 在工業控制系統、自動化設備、能源管理系統等領域得到廣泛應用。 Modbus 協議的基本特點&#xff…

大件垃圾識別 mAP↑28%:陌訊多模態融合算法實戰解析

一、行業痛點:大件垃圾識別的現實困境在城市環衛智能化轉型過程中,大件垃圾(如廢舊家具、電器等)的自動化識別與分揀成為關鍵環節。據住建部《城市環境衛生發展報告》顯示,傳統人工分揀模式下大件垃圾識別準確率不足 6…

vk框架或者普通函數封裝的一些函數可以拿取使用【會持續更新】

1.身份證校驗【通用】/*** function isIDCard* description 判斷是否為有效的身份證號碼。* param {string} idCard - 待驗證的身份證號碼。* returns {boolean} 返回驗證結果。*/ pubFun.isIDCard function (idCard) {// 身份證號碼為15位或者18位,15位時全為數字…

如何給Word和WPS文檔添加密碼或取消密碼

要保護Word和WPS文檔,可以為它們加密,加密有兩類:打開密碼和修改密碼。密碼設置有兩個入口,一個是在另存為,一個是在文件菜單。Word和WPS文字的路徑略有不同,微軟Office和WPS的其他套件也是如此操作。一、W…

uni-app項目gitignore文件示例

uni-app 忽略以下文件和目錄 DS_Store 忽略 UniApp 編譯生成的小程序相關目錄 unpackage/ uni_modules/ 忽略編輯器自動生成的文件 idea/ vscode/ 忽略日志文件 logs/ 忽略臨時文件 temp/ 忽略構建工具自動生成的文件 build/ 忽略 npm 安裝的包文件 package-lock.json yarn.loc…

LeetCode 135:分糖果

LeetCode 135:分糖果問題本質與核心挑戰 給定孩子的評分數組,需滿足 “每個孩子至少1顆糖果,相鄰評分高的孩子糖果更多”,求最少糖果總數。核心挑戰: 相鄰約束是雙向的(左→右和右→左都需滿足)…

【QT】安裝與配置

個人主頁:Guiat 歸屬專欄:QT 文章目錄1. QT簡介與準備工作1.1 什么是QT1.2 QT的版本選擇1.3 系統要求檢查2. QT安裝方式詳解2.1 官方在線安裝器2.2 離線安裝包2.3 包管理器安裝3. Windows平臺安裝配置3.1 Windows安裝步驟3.2 環境變量配置3.3 Visual Stu…

Java從入門到精通 - 算法、正則、異常

算法、正則、異常 此筆記參考黑馬教程,僅學習使用,如有侵權,聯系必刪 文章目錄算法、正則、異常1. 常見算法1.1 簡單認識算法1.1.1 什么是算法?1.1.2 為什么要學習算法?1.2 排序算法1.2.1 冒泡排序1.2.1.1 實現冒泡排…

題單【排序】

P1271 【深基9.例1】選舉學生會 P1271 【深基9.例1】選舉學生會 - 洛谷 【方法一】快速排序 使用sort()&#xff0c;注意數組的范圍&#xff01;&#xff01;&#xff01; #include<bits/stdc.h> using namespace std;int a[2000000],n,m;int main() {cin>>n>&g…

【機器學習】(算法優化二)提升算法之:AdaBoost與隨機梯度

文章目錄一、 AdaBoost&#xff1a;自適應提升算法1、AdaBoost數學原理詳解1.1、 目標函數1.2、 樣本權重更新的邏輯1.3、 模型權重計算的含義1.4、 AdaBoost的核心思想2、為什么AdaBoost如此有效&#xff1f;二、 隨機梯度提升算法&#xff1a;梯度優化下更精細的優化1、隨機梯…

力扣 hot100 Day65

75. 顏色分類 給定一個包含紅色、白色和藍色、共 n 個元素的數組 nums &#xff0c;原地 對它們進行排序&#xff0c;使得相同顏色的元素相鄰&#xff0c;并按照紅色、白色、藍色順序排列。 我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。 必須在不使用庫內置的 sort 函…

12.Linux 磁盤管理

Linux : 磁盤管理 一、磁盤設備命名規則磁盤類型設備命名模式示例特點SATA/SCSI/SAS/dev/sdXsda&#xff08;第一塊硬盤&#xff09; sda1&#xff08;第一塊硬盤第一分區&#xff09;機械硬盤/通用接口NVMe/dev/nvmeXnYpZnvme0n1&#xff08;第一通道第一塊盤&#xff09; …

《Linux服務與安全管理》| DHCP服務器安裝和配置

《Linux服務與安全管理》| DHCP服務器安裝和配置 目錄 《Linux服務與安全管理》| DHCP服務器安裝和配置 一、點擊“編輯虛擬機設置”&#xff0c;配置三臺虛擬機為“僅主機”模式。 二、server01開機&#xff0c;root用戶登錄&#xff0c;輸入nmtui&#xff0c;進入圖形界面…

賽博威攜手Dify,助力AI在企業的場景化落地

人工智能正以前所未有的速度重塑商業世界。我們經歷了從理論探索到大語言模型&#xff08;LLM&#xff09;的爆發式增長&#xff0c;如今&#xff0c;一個以“AI Agent&#xff08;智能體&#xff09;”為核心的新階段已然來臨。AI Agent代表了人工智能應用的未來形態。它不再被…

嵌入式硬件中三極管推挽電路控制與實現

我們昨天講到了這個電路。 如果 A 電是 PWM 波,那么請問 B 點是不是 PWM 波呢?那么,當 PWM 為高時, B 點的電流是從哪里流過來的?

數據結構——查找(三、樹形查找)

一、二叉排序樹&#xff08;BST&#xff09;1、二叉排序樹的定義構造一棵二叉排序樹的目的并不是排序&#xff0c;而是提高查找、插入和刪除關鍵字的速度二叉排序樹&#xff08;也稱二叉搜索樹&#xff09;或者是一顆空樹&#xff0c;或者是具有以下性質的二叉樹1、若左子樹非空…

八股——Kafka相關

文章目錄1、 消息隊列的作用什么&#xff1f;思&#xff1a;消息隊列是什么?消息隊列的定義消息隊列的工作原理消息隊列的作用消息隊列的常見類型消息隊列的簡單例子2、Kafka 集群的架構是什么樣子的&#xff1f;3、Kafka 消費者組和生產者組是什么&#xff1f;定義與核心作用…

墨者學院SQL手工注入漏洞測試(MySQL數據庫)題目,純手工注入教程

打開練習手工注入的靶場,發現此時為一個登錄頁面,我們先試著登錄看看注入點在不在登錄頁面 使用用戶:or 1=1# 密碼:admin123;嘗試登錄,發現顯示錯誤后直接彈回原頁面,無sql報錯相關語句,這里不存在sql注入點 一:判斷注入點以及猜測是否有注入 此時點擊這里的動態頁面…

[硬件電路-140]:模擬電路 - 信號處理電路 - 鎖定放大器概述、工作原理、常見芯片、管腳定義

一、鎖定放大器概述鎖定放大器&#xff08;Lock-in Amplifier&#xff09;是一種基于相干檢測技術的高靈敏度測量儀器&#xff0c;通過將待測信號與參考信號進行同步處理&#xff0c;從強噪聲中提取微弱信號并精確測量其振幅與相位。其核心優勢包括&#xff1a;信噪比提升&…