在前面的章節(jié)中,你知道了過程是一組指令,它讓你在程序運行的時候完成一些具體的任務。VBA有以下三種過程:
1、子程序過程(子程序)執(zhí)行一些有用的任務但是不返回任何值。它們以關鍵字Sub開頭和關鍵字End Sub結束。子程序可以用宏錄制器錄制或者在VB編輯器窗口里直接編寫。你已經學習了多種運行這種過程的方法。
?
2、函數(shù)過程(函數(shù))執(zhí)行具體任務并返回值。它們以關鍵字Function開頭和關鍵字EndFunction結束。在本章中,你將創(chuàng)建你的第一個函數(shù)過程。函數(shù)過程可以從子程序里執(zhí)行,也可以從工作表里訪問,就像Excel的內置函數(shù)一樣。
3、屬性過程用于自定義對象。使用屬性過程你可以設置和獲取對象屬性的值,或者設置對另外一個對象的引用。你將在第十一章中學習如何創(chuàng)建自定義對象和使用屬性過程。
在本章中,你將學習如何創(chuàng)建和執(zhí)行自定義函數(shù),另外,你將發(fā)現(xiàn)變量如何用于傳遞數(shù)據給子程序和函數(shù)。在本章后面,你將對VBA中兩種最有用的函數(shù):MsgBox和InputBox進行比較徹底的了解。
1. 打開一個新Excel工作簿,并保存為Chap04.xls
2. 切換到VB編輯器窗口并且選擇VBAProject(Chap04.xls)
3. 在屬性窗口,將VBAProject改為MyFunctions
4. 在工程瀏覽器窗口選擇MyFunctions(Chap04.xls),然后選擇“插入”-“模塊”
5. 在屬性窗口將“模塊1”改為Sample1
6.在工程瀏覽器窗口,點擊Sample1并選擇“插入”-“過程”(譯者:需要激活右邊的代碼窗口)。添加過程對話框如圖4-1所示
圖4-1 你使用添加過程對話框時,VB自動創(chuàng)建你選擇的過程類型
7.在對話框里輸入下列設置:
名稱:SumItUp
類型:函數(shù)
范圍:公共的
8. 點擊確定退出添加過程對話框。VB輸入了一個空函數(shù)過程如下:
Public Function SumItUp()
End Function
第一句聲明函數(shù)過程名稱,關鍵字Public表面這個函數(shù)可以在所有模塊的所有過程里訪問。關鍵字Public是可選的。注意,關鍵字Function后面是函數(shù)名稱(SumItUp)和一對空括號。在括號里你可以列上計算中需要的數(shù)據項目。每個函數(shù)過程都以End Function語句結束。
技巧:關于函數(shù)名稱
函數(shù)名稱應該點明該函數(shù)的作用,并且必須和變量的命名規(guī)則一致。
技巧:設置VBA過程范圍
在前幾章你學習了變量的范圍決定它可以在哪些模塊和過程里使用,和變量一樣,VBA過程也有范圍。過程的范圍決定其它模塊里的過程是否可以調用該過程。所以的VBA過程默認為公共的,這意味著它可以被任何模塊里的其它過程調用。因為過程默認為公共的,所以如果你愿意你可以忽略關鍵字Public。但是,如果你將Public關鍵字換成關鍵字Private,那么你的過程只能被同一模塊里的其它過程調用,而不能被其它模塊里的過程調用。
將函數(shù)聲明修改為這樣:
Public Function SumItUp(m,n)
End Function
這個函數(shù)的目的是加和兩個數(shù)值。不要將實際值輸給函數(shù)。給該函數(shù)提供兩個自變量以確保該函數(shù)具有靈活性。這樣,你的自定義函數(shù)就能夠將你提供的任何兩個數(shù)值加和起來了。每個變量代表一個數(shù)值,你在運行該函數(shù)時要給每個變量提供數(shù)值。
技巧:使用函數(shù)的理由
自定義VBA函數(shù)可以用于:
?
1、分析數(shù)據和進行計算
2、修正數(shù)據和匯報信息
3、基于提供的或計算的數(shù)據采取具體行動
10. 在Public Function和End Function之間輸入下述語句:
SumItUp = m + n
這條語句意思是將儲存于變量n上的數(shù)據加在儲存于變量m的數(shù)值上,并且將結果返回給函數(shù)SumItUp。在等號后面輸入該函數(shù)名稱,再就是括號和需要加和的數(shù)值。在上面的語句中,設置函數(shù)名稱等于m + n的和。完成的自定義函數(shù)過程如下:
Public Function SumItUp(m,n)
SumItUp = m + n
End Function
祝賀,你已經創(chuàng)建了你的第一個函數(shù)!然而,函數(shù)過程并沒有什么用,除非你知道如何執(zhí)行它。下一個段落將給你示范如何使你的函數(shù)工作。
1. 切換到Excel窗口,并選擇任何一個單元格
2.點擊函數(shù)工具欄上的“插入函數(shù)(fx)”按鈕(譯者:或者選擇“插入”-“函數(shù)”),Excel彈出插入函數(shù)對話框,上面顯示了所選類別里所以函數(shù),按字母順序排列
3. 在類別下拉框里選擇“全部”或者“用戶定義”,然后滾動函數(shù)名稱框,找到并選擇本章中創(chuàng)建的函數(shù)SumItUp。當你選中這個函數(shù)名稱時,在插入函數(shù)對話框的下部顯示了該函數(shù)的語法:
SumItUp(m,n)
技巧:私有函數(shù)用戶是看不到的
使用關鍵字Private聲明的函數(shù)不會出現(xiàn)在“插入函數(shù)”對話框上,私有函數(shù)不能用于公式里,它們只能從另一個VBA過程里調用。
技巧:快速訪問自定義函數(shù)
一旦你創(chuàng)建了一個公共的VBA函數(shù),Excel就會將它加入到“插入函數(shù)”對話框的“用戶定義”的類別里。通過選擇這個類別,你可以快速地訪問該自定義函數(shù)。
更多建議: