Sub 語句
聲明 Sub 過程的名稱、參數以及構成其主體的代碼。
[Public [Default]| Private] Sub name [(
arglist
)]
[statements]
[Exit Sub]
[statements]
End Sub
參數
Public
表示 Sub 過程可被所有腳本中的所有其他過程訪問。
Default
只與 類塊中的Public 關鍵字連用,用來表示 Sub 過程是類的默認方法。 如果在類中指定了不止一個Default過程,就會出錯。
Private
表示 Sub 過程只可被聲明該過程的腳本中的其他過程訪問。
name
Sub 的名稱,遵循標準變量命名約定。
arglist
代表在調用時要傳遞給 Sub 過程的參數的變量列表。用逗號隔開多個變量。
statements
在 Sub 過程主體內所執行的任何語句組。
arglist 參數包含下列語法和部分:
[ByVal | ByRef] varname[( )]
參數
ByVal
表示該參數是按值傳遞的。
ByRef
表示該參數按引用傳遞。
varname
代表參數的變量名稱,遵循標準變量命名約定。
說明
如沒有顯式地指定使用 Public 或 Private,則 Sub 過程默認為公用,即它們對于腳本中的所有其他過程都是可見的。Sub 過程中局部變量的值在調用過程中不被保留。
不能在任何其他過程(例如,Function 或 Property Get)中定義 Sub 過程。
使用 Exit Sub 語句可以立即從 Sub 過程中退出。程序繼續執行調用 Sub 過程的語句之后的語句。可以在 Sub 過程中任意位置出現任意個 Exit Sub 語句。
與 Function 過程相似之處是:Sub 過程是一個可以獲取參數,執行一系列語句以及可改變其參數的值的獨立過程。而與 Function 過程不同之處是:Function 過程可以返回值,而 Sub 過程不能用于表達式中。
可以使用過程名并跟隨相應的參數列表來調用 Sub 過程。關于如何調用 Sub 過程的詳細說明信息,請參閱 Call 語句。
小心 Sub 過程可以是遞歸的,即該過程可以調用自己來完成某個給定的任務。但是遞歸可能會導致堆棧溢出。
在 Sub 過程中使用的變量分為兩類:一類是在過程內顯式聲明的,另一類則不是。在過程內顯式聲明的變量(使用 Dim 或等效方法)總是局部變量。對于那些沒有在過程中顯式聲明的變量也是局部的,除非在該過程外更高級別的位置顯式地聲明它們。
小心 過程可以使用沒有在過程內顯式聲明的變量,但只要有任何 script 級定義的名稱與之同名,就會產生名稱沖突。如果過程中引用的未聲明的變量與其他的過程、常數或變量的名稱相同,則會認為過程引用的是腳本級的名稱。要避免這類沖突,請使用 Option Explicit 語句可強制顯式聲明變量。