EXCEL很好用,尤其是在數(shù)據(jù)統(tǒng)計(jì)和處理的時(shí)候,但是EXCEL本身提供的函數(shù)有它自己的局限性,很多特定的功能無法實(shí)現(xiàn),用起來不夠靈活,那么EXCEL中嵌入的VBA編程語言就可以解決這個(gè)問題,它可以:
l 處理若干單元格中重復(fù)的具有同一特征的數(shù)據(jù)。舉個(gè)例子,一個(gè)單元格里面有字符和數(shù)字,現(xiàn)在想只保留單元格中數(shù)字,去除其他字符。這個(gè)可以用VBA語言中的循環(huán)語句+數(shù)字識別命令識別單元格中數(shù)字,并對其他字符刪除。
l 對具有某一特征的多個(gè)單元格的數(shù)據(jù)進(jìn)行處理。例如,將滿足某一特征A的單元格中數(shù)據(jù)和滿足另一特征B的單元格的數(shù)據(jù)合并或其他操作,存放在另一個(gè)位置的單元格組中。
l 其他的只有你想不到?jīng)]有辦不到的應(yīng)用。
VBA一般的開發(fā)流程是這樣的:
l 準(zhǔn)備工作:對待處理的數(shù)據(jù)進(jìn)行特征分析,確定處理的目標(biāo)、怎么干等;
l 打開VBA開發(fā)環(huán)境;
l 選擇操作的對象,如工作表;
l 選擇操作對象的動作和響應(yīng)事件,如雙擊、選中、右擊等;
l 編寫事件代碼,如對單元格雙擊后執(zhí)行什么操作;
如有必要,可以添加人機(jī)交互窗體;
l 運(yùn)行VBA程序;
l 保存和關(guān)閉。
2.1使用的前提l 使用者應(yīng)當(dāng)具有一定的編程基礎(chǔ),有VB開發(fā)經(jīng)驗(yàn)最好。
2.2入門介紹和不完全使用步驟(1)EXCEL VBA開發(fā)環(huán)境介紹l 打開VBA開發(fā)環(huán)境
圖 1
圖 2 VBA的編程環(huán)境
l 編寫代碼、添加人機(jī)交互界面等
如圖 2中的編程區(qū),在里面就可以編寫用戶代碼。
? 編寫代碼一般先需要選擇操作對象?!巴ㄓ谩币话阌糜谌肿兞康亩x,“worksheet”一般用于工作表的操作;
? 還需要選擇動作和響應(yīng)事件。用于處理對對象進(jìn)行某種操作之后的響應(yīng)事件,如雙擊單元格后執(zhí)行什么動作,右擊單元格之后執(zhí)行什么操作等。根據(jù)提示的助記符單詞應(yīng)該大致知道是什么動作事件。
事件選擇完成后,會彈出一段子過程定義段,在定義段內(nèi)編寫代碼即可。
如有需要,也可以添加人際交互的窗體,用于運(yùn)行過程控制、輸入?yún)?shù)、顯示參數(shù)等功能。
圖 3 添加人機(jī)交互窗體
添加了窗體和控件之后,就可以像VB那樣子編寫程序,如:
? 按鍵控件的操作。點(diǎn)擊按鈕控件,編寫按鍵動作事件發(fā)生后執(zhí)行的操作的程序等。
? 文本框的操作。文本框有輸入和輸出的功能,根據(jù)需要編寫相應(yīng)的程序。
? 其他控件的使用方法不再詳述。
l 運(yùn)行和保存
工具欄上有個(gè)倒三角按鈕,點(diǎn)擊它就可運(yùn)行程序,也可以點(diǎn)擊菜單欄[運(yùn)行],里面有運(yùn)行按鍵,功能一樣。
圖 4
圖 5
保存和其他文件的操作方式一樣,可以點(diǎn)擊菜單欄文件/保存。
如果要保留EXCEL文件中的VBA代碼,一般需要啟用宏,并保存為.XLSM(啟用了宏的工作表)格式的文件。
啟用宏的方法:
? 點(diǎn)擊EXCEL文件的左上角[開始]菜單;
? 點(diǎn)擊[EXCEL選項(xiàng)]/[信任中心]/[信任中心設(shè)置]/[宏設(shè)置],再進(jìn)行如下的啟用宏的設(shè)置;
圖 6 啟用宏的設(shè)置
設(shè)置完成后點(diǎn)擊“確定”按鈕,保存關(guān)閉后再打開就可以了,宏已經(jīng)被啟用了。
注意:如果保存文件的時(shí)候已經(jīng)運(yùn)行了VBA代碼,那么下次打開EXCEL文件時(shí)它會自動進(jìn)入執(zhí)行狀態(tài),假如沒有的話再次打開VBA開發(fā)界面,點(diǎn)擊上方的倒三角運(yùn)行按鈕就可以運(yùn)行程序了。
(2)EXCEL VBA一段代碼的分析舉個(gè)例子講一下參考代碼,下面一段代碼實(shí)現(xiàn)了如下功能:
l 將工作表sheet1中的1-5行、第1列的單元格中的數(shù)據(jù)進(jìn)行處理,提取單元格中末尾的數(shù)字。
l 并將提取的數(shù)字結(jié)果存入對應(yīng)的第2列中。
下面是詳細(xì)代碼,將這段代碼復(fù)制到編程區(qū)中,按工具欄里的倒三角運(yùn)行即可實(shí)現(xiàn)以上功能:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) '提取數(shù)字。編好程序后在工作表里隨便雙擊一個(gè)單元格就能執(zhí)行。
For j% = 1 To 5 '在單元格1-5行提取數(shù)字
s$ = Sheet1.Cells(j, 1) '工作表1中將第j行第1列單元格內(nèi)容存入字符串變量s。$是字符串定義符
s=Trim (s) '去除單元格中的頭尾空格
s2$ = ''
For i% = Len(s) To 1 Step -1 '%是整形定義符
If InStr('0123456789.', Mid(s, i, 1)) Then '從單元格字符串的最末一個(gè)字符朝前開始判斷是否為數(shù)字
s2 = Mid(s, i, 1) & s2$ '是數(shù)字,倒著存入變量s2
Else
Exit For '不是數(shù)字,退出for循環(huán)
End If
Next i
Sheet1.Cells(j, 2) = s2 '某一個(gè)單元格字符串處理完后,結(jié)果存入B列
Next j
End Sub
全文完。本文只是VBA入門而已,詳細(xì)的操作技巧請查閱相關(guān)書籍。
聯(lián)系客服