- 對(duì)于存在excel里的數(shù)據(jù)諸如商品信息、會(huì)員信息、交易信息等,每當(dāng)我們需要查找的時(shí)候,第一反應(yīng)都是使用Ctrl+F或vlookup函數(shù),但如果表格和信息行數(shù)較多,這樣的查找就顯得比較費(fèi)勁。
- 雖然數(shù)據(jù)都在Excel里,但我們不是有VBA嗎?不如利用VBA裝個(gè)逼,做一個(gè)信息查詢系統(tǒng)出來。
話不多說,先看成果~

2.gif
1.梳理代碼的結(jié)構(gòu)
從gif圖可以知道,打開“會(huì)員信息查詢.xlsm”的文件之后,不會(huì)顯示Excel工作界面,但會(huì)彈出“會(huì)員查詢”窗口。當(dāng)我們輸入超過4位的手機(jī)號(hào)時(shí),會(huì)出現(xiàn)模糊匹配的下拉列表供我們選擇。最后,點(diǎn)擊“查詢”按鈕,相關(guān)信息會(huì)顯示出來。由此,我們可以得到代碼的結(jié)構(gòu)為:
- 1.設(shè)置工作簿打開事件和窗體控件。
- 2.設(shè)置手機(jī)號(hào)碼文本框事件和下拉列表的模糊匹配。
- 3.設(shè)置查詢按鈕事件及相應(yīng)文本框的信息匹配。
- 4.設(shè)置窗體關(guān)閉事件。
2.喲西,開始寫代碼吧!
2.1.設(shè)置工作簿打開事件和窗體控件

image.png
- 為了裝逼,可以設(shè)置當(dāng)工作簿打開的時(shí)候,Excel工作界面不可見,只顯示查詢窗口,這樣別人可能會(huì)以為我們?cè)谑褂媚膫€(gè)牛逼的系統(tǒng)hhh
- 接著,把我們需要查詢的信息作為控件如標(biāo)簽、文本、列表框、按鈕等插入窗口中,設(shè)置窗口的名字為“會(huì)員查詢”。
2.2. 設(shè)置手機(jī)號(hào)碼文本框事件和下拉列表

image.png
- 這一步可以說是我們這個(gè)“系統(tǒng)”的靈魂,也是很多查詢系統(tǒng)的套路,即通過模糊匹配幫我們節(jié)省查找的時(shí)間。
- 首先,文本框一改變會(huì)觸發(fā)列表框的相應(yīng)動(dòng)作,因此要選擇文本框的change事件。
- 在書寫這一段代碼的時(shí)候,需要特別注意下拉列表的顯示設(shè)置。代碼邏輯就是:下拉列表的visible默認(rèn)為false,只有當(dāng)文本框的輸入值大于等于4時(shí),列表才會(huì)顯示。當(dāng)列表里的值被選擇,列表重新變成不可見。
2.3. 設(shè)置查詢按鈕事件及相應(yīng)文本框

image.png
- 利用find函數(shù),我們可以找到對(duì)應(yīng)的單元格。需要注意的是,如果不用rng變量賦值,當(dāng)find函數(shù)找不到單元格時(shí),系統(tǒng)會(huì)報(bào)錯(cuò),代碼就gg了。所以rng進(jìn)行賦值,使用if語句判斷rng之后,才能運(yùn)行下面的代碼。
- 找到對(duì)應(yīng)單元格之后,利用offset函數(shù),我們就能輕松地得到我們想要的信息啦~
2.4.設(shè)置窗體關(guān)閉事件

image.png
- 最后就只剩下一個(gè)騷包的操作,那就是關(guān)閉窗體的同時(shí),把Excel也關(guān)了,這逼我們也就裝完了hhh
3. 文章說明
- 代碼主要涉及了窗體控件和事件,不具有普適性,就不分享代碼了~
- 這是本人學(xué)習(xí)王老師的《跟著王老師學(xué)Excel VBA》課程所寫的案例分享,需要系統(tǒng)學(xué)習(xí)的小伙伴,B站指路:https://www.bilibili.com/video/BV1L4411Q7Ni