VBA基礎(chǔ)實戰(zhàn)之自動化錄入表單二
大家好,我是一分鐘學Excel。今天我們繼續(xù)來講解VBA的基礎(chǔ)實戰(zhàn),在上一期中我們講解了最簡單最基礎(chǔ)的語句去簡單完成了自動錄入表單的制作,不記得的小伙伴可以點擊下方往期文章回顧哦。
很多小伙伴在完成第一期內(nèi)容制作的時候,是不是覺得雖然簡單但是很麻煩?那么多的語句那么多的英文繞得頭疼。本期將在上期的基礎(chǔ)上進行優(yōu)化!編程嘛,肯定是從繁到簡啦~
在這一期中,我們將運用VBA中的窗體與控件結(jié)合完善程序,進行自動錄入表單的進化操作,實現(xiàn)效果如下:

來吧,學習時間!

本期我們要開始學習在VBA中的窗體,窗體是什么意思呢?另一個詞語,你應(yīng)該更有印象,那就是彈窗!如果你不太清楚彈窗的話,可以看看你的電腦右下角有沒有廣告彈窗~
在VBA中,最簡單的方式去創(chuàng)造一個彈窗便是MsgBox(信息盒子),是用MsgBox語句,我們可以簡單的獲取一個彈窗,就像這樣:

還有另外一種彈窗方式便是Inputbox,這也是我們本期學習的第一個知識點。
INPUTBOX
功能
INPUTBOX意思是提供一個可供輸入的窗體盒子。又到了學習英文的時候啦~我們把將其拆解為INPUT(輸入)和BOX(盒子)兩個單詞,拼湊起來便是輸入盒子,也就是簡單的輸入窗口。

使用
使用方法非常簡單,只需輸入INPUTBOX(“提示語句:”)便可創(chuàng)建一個簡單的輸入窗口。
括號中的內(nèi)容為提示信息哦~
代碼:
Sub 窗體練習
INPUTBOX(“提示語句:”)
End Sub
實現(xiàn)效果:

這里有一個小坑哦,仔細看實現(xiàn)效果,你會發(fā)現(xiàn),當我們進行輸入之后,數(shù)據(jù)消失了?
這是為什么呢?其實這是因為我們并沒有為數(shù)據(jù)設(shè)置一個歸處,無家可歸的數(shù)據(jù)只能原地消失,這時我們就需要進行第二步操作啦。那就是給我們數(shù)據(jù)建造一個家——變量。
變量
變量應(yīng)用十分廣泛,不僅在VBA中時常用到,在其他編程語言中他也是隨處可見的。變量簡單的來說就是存儲數(shù)據(jù)的空間。
這樣理解可能有一定困難,簡單舉個栗子,你就清楚了。
在生活中,我們常常要保存電話號碼,就像這樣:

當我們在電話簿里存儲電話號碼時,我們不會直接存儲13612341234,因為當我們電話簿中聯(lián)系人非常多時,尋找電話就異常費時費力,我們常常是這樣做的:

這時我們就需要一個盒子,把這個電話號碼丟進去,并為它寫上一個標簽,命名為張三。當我們下次使用該號碼時,直接找到張三就好了。

在編程過程中也是一樣的,為方便查找到一個數(shù)據(jù),我們會使用一個盒子來裝這些數(shù)據(jù)并打上標簽,而這個盒子就是變量,標簽就是變量名,打標簽的過程在編程世界中就是變量賦值過程。

我們會使用一個等號來進行賦值,這個等號稱為賦值等號。

明白了大致的原理后,現(xiàn)在我們來實際操作一下:把INPUTBOX語句的內(nèi)容賦值給變量“工號”,最后使用msgbox輸出變量的內(nèi)容。
代碼:
Sub 窗體練習
工號 = INPUTBOX(“提示語句:”)
姓名= INPUTBOX(“提示姓名:”)
部門= INPUTBOX(“提示部門:”)
End Sub
實現(xiàn)效果:

這一步操作完后,依次將姓名、部門都進行變量賦值。

這一步完成之后,需要思考一個問題,我們設(shè)計的程序最主要的功能便是將輸入的內(nèi)容放置于表格之中,那么既然我們已經(jīng)將輸入的內(nèi)容賦值給了變量,那么我們?nèi)绾卧搶⒆兞糠胖糜诒砀裰心兀?/p>
上一期中我們的操作辦法是,先獲取表格中的空白區(qū)域,然后將主頁表格的值再復(fù)制粘貼進去表格之中。而現(xiàn)在,我們還需要復(fù)制粘貼嗎?

nonono~設(shè)計程序的目的便是讓重復(fù)的操作自動化,復(fù)雜的操作簡單化?,F(xiàn)在我們學習了變量之后,只需要將變量的值使用賦值等號“=”放置于表格的對應(yīng)區(qū)域就好了。就像這樣
代碼:
Sub 窗體練習
工號 = INPUTBOX(“提示語句:”)
姓名= INPUTBOX(“提示姓名:”)
部門= INPUTBOX(“提示部門:”)
Range("A1").End(xlDown).Offset(1,0).Value = 工號
Range("A1").End(xlDown).Offset(0,1).Value = 姓名
Range("A1").End(xlDown).Offset(0,2).Value = 部門
End Sub
實現(xiàn)效果:

為了方便錄入,還可以新建一個按鈕綁定代碼進行錄入
實現(xiàn)效果:

好了,現(xiàn)在簡單的窗口已經(jīng)設(shè)計完畢,我們可以發(fā)現(xiàn)運行的時候,還是有一些麻煩,每一次輸入都要點擊一次確定,然后再開始輸入下一步,如果前面輸入錯誤的話,都不能返回上一步。所以,我們需要對程序進行再一次優(yōu)化,變成這樣:

難度升級!想要實現(xiàn)這樣的效果,我們將開始學習新的知識點,便是:【窗體與控件】
窗體與控件
其實在VBA中自帶了窗體功能,想要使用,只需在對應(yīng)的工作表處右鍵點擊插入用戶窗體即可,或點擊上方菜單欄中的插入來使用用戶窗體。

這時會出現(xiàn)一個用戶窗體的使用界面,分別為:編輯頁面、控件頁面、信息頁面。

窗體信息頁面欄可修改窗體名稱,調(diào)節(jié)字體字號等操作,這里我們可以修改窗體名稱為:表單錄入。

而如果想要在窗體上增加一些功能,比如提示語句、按鈕、輸入框等。這時候,控件便登場了!
控件頁面主要為窗體增加一些信息。

如點擊字母A的按鈕可添加提示信息,這里我們創(chuàng)建三個提示信息,分別為工號、姓名、部門。在詳細頁面區(qū),我們還可以進行字體修改、字號調(diào)整與顏色更換等。
提示信息完畢后,就到了文本輸入框,文本輸入框與INPUTBOX一樣,都是用于提供文本輸入的框框。
文本框按鈕在第一排第三個(ab)按鈕哦~

最后創(chuàng)建兩個按鈕,一個用于錄入執(zhí)行,另一個用于退出錄入。

到這一步,基本的布局便完成了。當然,現(xiàn)在還是比較丑的,想要美化的,可以自行美化哦~
那么,重點戲要來啦!該寫代碼了!

悄悄的告訴你,代碼很簡單哦~舉一反三,前面我們使用的INPUTBOX語句既然與這里控件的文本輸入款是一樣的功能。那么,剛剛寫的代碼是否能復(fù)用呢?
答案是,肯定的!
我們只需要將INPUTBOX的語句換成控件的文本輸入框語句就可以了。根據(jù)想象信息,我們可以知識文本輸入框的名稱,得到名稱就很好寫了,只需要使用點號去調(diào)用值即可。
代碼
工號 = TextBox1.Value
姓名= TextBox2.Value
部門= TextBox3.Value
看到這里的代碼,真的想感嘆一句,只聞新人笑,不問舊人哭~
既然代碼修改完畢后,問題來啦,我們該如何去運行代碼呢?看看,我們剛剛制作的窗體上有兩個按鈕,一個是錄入,一個是退出。
錄入的功能是,當按鈕被點擊時,文本輸入框的信息就進行自動填充。因此我們需要在錄入按鈕中編寫代碼。雙擊錄入按鈕便可以進入到按鈕的代碼編輯頁面。
代碼
Pricate Sub CommandButton1_Click()
工號 = TextBox1.Value
姓名= TextBox2.Value
部門= TextBox3.Value
Range("A1").End(xlDown).Offset(1,0).Value = 工號
Range("A1").End(xlDown).Offset(0,1).Value = 姓名
Range("A1").End(xlDown).Offset(0,2).Value = 部門
End Sub
實現(xiàn)效果:

細心的你,看到這里,一定能發(fā)現(xiàn)一個問題。那便是:點擊按鈕后里面的文字并沒有清空,還殘留在上面,這時如果不小心多點擊了一次,將導(dǎo)致重復(fù)的數(shù)據(jù)出現(xiàn)。
有問題不可怕,可怕的是忽視問題。解決這個問題很簡單,我們只需要在程序中執(zhí)行值的傳遞后,將文本輸入框的內(nèi)容設(shè)為空值即可。
代碼
Pricate Sub CommandButton1_Click()
工號 = TextBox1.Value
姓名= TextBox2.Value
部門= TextBox3.Value
Range("A1").End(xlDown).Offset(1,0).Value = 工號
Range("A1").End(xlDown).Offset(0,1).Value = 姓名
Range("A1").End(xlDown).Offset(0,2).Value = 部門
TextBox1.Value = “”
TextBox2.Value = “”
TextBox3.Value = “”
End Sub
實現(xiàn)效果:

最后只剩下退出按鈕沒有功能了,對于退出按鈕,我們想實現(xiàn)的效果是:點擊退出按鈕后整個窗體消失。
來來來,又到了英文時間,窗體消失,也可以表現(xiàn)為窗體隱藏。那么語句就很簡單,窗體名稱加上點號再加上Hide(隱藏)(窗體名稱.Hide)
雙擊【退出按鈕】進入代碼編寫區(qū)域,編寫隱藏窗體語句
代碼
Pricate Sub CommandButton2_Click()
表單錄入.Hide
End Sub
實現(xiàn)效果

現(xiàn)在我們將先開始在表格上設(shè)計的藍色按鈕與窗體程序聯(lián)系起來,回到窗體練習模塊中將原先的代碼刪除掉,替換為顯示窗體代碼,即窗體名稱加上點號再加上Show(窗體名稱.Show)
代碼:
Sub 窗體練習()
窗體名稱.Show
End Sub
演示效果:

好!現(xiàn)在大功告成,很不錯哦!給你鼓個掌??????~
不過,整個程序中還存在一些問題,比如不能自動查重也不能出現(xiàn)聯(lián)想。但是,作為初學者做到這步很不錯啦~俗話說,每天一小步,人生一大步。繼續(xù)加油啦。
下一期中,我們將學習更多VBA知識,掌握循環(huán)語句與條件語句。下期再見!