前面講過,VBA代碼有兩種組織形式,一種就是過程(前面的示例中都在使用),另一種就是函數(shù)。其實過程和函數(shù)有很多相同之處,除了使用的關(guān)鍵字不同之外,還有不同的是:
雖然可以把所有代碼都放在一個過程,或者一個函數(shù)里面,但是這樣會使代碼難以維護,特別是非常不便于其他人查看修改。而有時一些重復性的代碼,也應該把它們獨立出去,作為一個子過程或子函數(shù)來組織。使用子過程和子函數(shù)的目的,就是為了便于組織代碼、便于維護。 1. 過程 Sub過程以Sub開頭,End Sub結(jié)束,過程中需要執(zhí)行的代碼放在中間。格式如下:
過程名后面的括號是必須的,過程可以帶參數(shù),就放置在括號里面,稍后會有說明。 過程示例:
2. 函數(shù) Function與過程類似,函數(shù)的格式如下:
函數(shù)名后面的括號是必須的,函數(shù)通常都帶有參數(shù),放置在括號里面。函數(shù)也可以不帶參數(shù),但這種情況下的函數(shù)通常沒什么意義。 括號后面的 函數(shù)體最后通常都帶有一條返回值語句,把函數(shù)執(zhí)行的結(jié)果賦值給函數(shù)名,就可以在調(diào)用這個函數(shù)的地方得到這個函數(shù)的執(zhí)行結(jié)果。這個返回結(jié)果的數(shù)據(jù)類型應該與函數(shù)名后面As的數(shù)據(jù)類型一致,否則可能會出錯。 函數(shù)示例:
上例中定義了一個名為 定義函數(shù)后,就可以在VBA中的過程,或者其它函數(shù),或者在Excel表格中使用這個函數(shù)了。 在Excel表格中使用: 在VBA過程中使用: 再次強調(diào),函數(shù)是不能直接執(zhí)行的。上例中,如果試圖把鼠標光標放在my_sum函數(shù)中,再按F8,或者點擊工具欄中的執(zhí)行按鈕,都不會執(zhí)行這個函數(shù),而是會彈出一個運行宏的選擇對話框,而在這個對話框中,是沒有任何函數(shù)可供選擇的,只有過程: 3. 過程和函數(shù)的調(diào)用前面說過,過程和函數(shù),都可以是被相互調(diào)用的。 3.1 過程的調(diào)用格式1:
格式2:
如果過程不帶參數(shù),那么可以使用第1種格式,過程名后面不需要括號 如果過程帶有參數(shù),則要按照參數(shù)的順序依次把參數(shù)寫到過程名后面的括號中。即使用第2種格式。 3.2 函數(shù)的調(diào)用函數(shù)的調(diào)用在本章第2節(jié)中有示例。函數(shù)的調(diào)用通常會在調(diào)用時把其賦值給一個變量,以獲取函數(shù)返回值。
這里應該提出的是,函數(shù)應當要有返回值的,因為如果不需要返回值,那就應該直接使用過程而不是函數(shù)了。 4. 參數(shù)的使用參數(shù)和使用對于過程和函數(shù)都是一樣的。所以本節(jié)的內(nèi)容對過程和函數(shù)都適用。 參數(shù)可分為可選參數(shù)和必選參數(shù)兩種。必選參數(shù)在調(diào)用(過程或函數(shù)時)必須加上,否則會報錯。可選參數(shù)則可寫可不寫。默認是必選參數(shù),可選參數(shù)在定義時用 4.1 必選參數(shù)必選參數(shù)在定義時放置在過程或函數(shù)名后面的括號中,格式為:
如:
在調(diào)用時,必須傳入?yún)?shù):
4.2 可選參數(shù)格式與必選參數(shù)類似,只是在參數(shù)名前面用Optional聲明參數(shù)是可選的。
如:
在調(diào)用上述過程時,可以不傳入?yún)?shù),此時則不會輸出任何東西,也不會報錯,因為參數(shù)是可選的。如果傳入了參數(shù),則會輸出這個參數(shù)。 可選參數(shù)還可以設置默認值,即如果在調(diào)用時不顯式傳入這個參數(shù)的話,那么就使用定義時所使用的值。如下過程:
帶參數(shù)調(diào)用:
輸出:I am a boy 不帶參數(shù)調(diào)用:
輸出:Hello, World 4.3 同時使用可選參數(shù)與必選參數(shù)此時可選參數(shù)必須放在最后
只傳入必選參數(shù):
輸出: 50 Hello, World 同時傳入可選參數(shù)與必選參數(shù):
輸出: 50 Hi, Meinv 本系列教程其它文章 Excel VBA 入門(零) |
|