簡明Excel VBA
本文集同步于GitHub倉庫:# bluetata/concise-excel-vba
1.6 過程和函數
Sub和Function 是VBA提供的兩種封裝體赚导,利用宏錄制器得到的就是Sub
僧著。
兩者的區(qū)別不大肺蔚,Sub
不需要返回值臂外,Function
可以定義返回值和返回的類型勇哗。
1.6.1 Sub過程
[Private|Public] [Static] Sub 過程名([參數列表 [As 數據類型]])
[語句塊]
End Sub
' [Private|Public]定義過程的作用范圍
' [Static]定義過程是否為靜態(tài)
' [參數列表]定義需要傳入的參數
調用Sub
的方法有三種枣氧,使用Call
剩胁、直接調用和Application.Run
舉個例子:
1.6.2 Function函數
vba內部提供了大量的函數昂利,也可以通過Function
來定義函數缚陷,實現個性化的需求适篙。
[Public|private] [Static] Function 函數名([參數列表 [As 數據類型]]) [As 數據類型]
[語句塊]
[函數名=過程結果]
End Function
使用函數完成上面的例子:
參數傳遞
參數傳遞的方式有兩種,引用和傳值箫爷。
傳值嚷节,只是將數據的內容給到函數聂儒,不會對數據本身進行修改。
引用硫痰,將數據本身傳給函數衩婚,在函數內部對數據的修改將同樣的影響到數據本身的內容。
參數定義時效斑,使用ByVal
關鍵字定義傳值非春,子過程中對參數的修改不會影響到原有變量的內容。
默認情況下缓屠,過程是按引用方式傳遞參數的奇昙。在這個過程中對參數的修改會影響到原有的變量。
也可以使用ByRef
關鍵字顯示的聲明按引用傳參敌完。
Sub St1(ByVal n As Integer, ByRef range)
...Other code
End SUb