學習Excel技術,關注微信公眾號:
excelperfect
在《ExcelVBA解讀(27):看看VBA的Sub過程和Function過程》中,我們講解了Sub過程的基本形式。其實,Sub過程有更詳細的語法。本文就來詳細講解這些語法,雖然枯燥一些,但這是VBA最基礎的知識。
Sub過程的語法
Sub過程的完整語法形式如下:
按照常規約定,在方括號中的內容為可選部分,而方括號中用「|」分隔的內容則是多選一。即,若要使用[Public | Private | Friend],只需根據需要取其一就行了,或者是Public,或者是Private,或者是Friend。
看起來有點複雜!下面來逐一解說。
1.限定詞
Public
如果在Sub過程中使用Public,則表明可以在該工作簿的所有模塊中調用該過程。如果在類模塊中使用Public,則可以在工程外部調用該過程。對於Sub過程來說,Public是默認值。
Private
如果在Sub過程中使用Private,則表明只有過程所在模塊中的其他過程才能調用該過程。
Friend
僅在類模塊中有效。如果在類模塊的Sub過程中使用Friend,則表明可以在工程中的所有模塊中調用該過程,但不能在該工程外的模塊中使用該過程。
以上3個可選的關鍵字涉及到作用域,也就是指定了過程的影響範圍。作用域是一個很重要的概念,我們將專門講述。
Static
在過程調用時,保留該過程內部聲明的變量值。
2.參數
在過程名稱後的括號中,可以為空,也可以放置參數,其詳細的語法如下:
Optional
用來指定參數是可選的,也就是說在調用該過程時不一定要提供參數。如果使用Optional指定了某參數可選,那麼該參數後面的所有參數也必須是可選的。注意,如果使用了參數ParaArray,就不能使用Optional。
ByVal
指定參數通過值傳遞,也就是說,將該參數值賦給變量的副本。在調用過程中對參數值的改變,不會影響被調用過程的參數值。
ByRef
指定參數通過引用傳遞,也就是說,變量是對被傳遞參數的引用。在被調用過程中對參數值的修改,會影響調用過程中的參數值。這是默認的傳遞參數的方法。
ParamArray
指定參數是一個包含任意元素的可選變體數組,只能作為參數列表的最後一個元素,並且不能與ByRef、ByVal或者Optional同時使用。
變量名
可以包含參數引用或參數值的局部變量名稱。
類型
指定參數的數據類型。
默認值
對於可選參數,可以為其指定一個預設值。
3.Sub
表示過程的開始。
4.過程名稱
每個Sub過程必須有一個名稱。其命名規則與變量相同,參見《Excel VBA解讀(15):變量和常量》。通常,過程名稱最好能簡單表達該過程的作用。
5.End Sub
表示過程的結束。
使用規則
1.如果模塊開頭放置了Option Private語句,那麼即便使用Public聲明了Sub過程,該過程也會被看成是Private的。
2.Sub過程不返回值,因此不能作為表達式的一部分。
3.Sub過程可以包括任意條Exit Sub語句,用來強制退出該過程。
4.可以使用用戶定義類型作為參數來傳遞,但前提是該參數是必需的。如果一個Public聲明的Sub過程接受用戶定義類型作為參數,那麼在代碼模塊中也必須以Public來定義該用戶定義類型。
接下來的幾篇文章,將圍繞Sub過程來講解。