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