VB_sub

Sub 語句
描述
聲明 Sub 過程的名稱、參數以及構成其主體的代碼。

語法
[Public | Private] Sub name [(arglist)] 
[statements]
[Exit Sub]
[statements]
End Sub


Sub 語句的語法包含以下部分 

部分 描述 
Public 表示 Sub 過程可被所有 Script 中的所有其他過程訪問。 
Private 表示 Sub 過程只可被聲明該過程的 Script 中的其他過程訪問。 
Name Sub 的名稱,遵循標準變量命名約定。 
Arglist 代表在調用時要傳遞給 Sub 過程的參數的變量列表。用逗號隔開多個變量。 
Statements 在 Sub 過程主體內所執行的任何語句組。 


arglist 參數包含下列語法和部分:[ByVal | ByVal] varname[( )] 
部分 描述 
ByVal 表示該參數按值傳遞。 
ByRef 表示該參數按引用傳遞。 
Varname 代表參數的變量名稱,遵循標準變量命名約定。 

說明
如沒有顯式地指定使用 Public 或 Private,則 Sub 過程默認爲公用,即它們對於 Script 中的所有其他過程都是可見的。Sub 過程中局部變量的值在調用過程中不被保留。

所有可執行代碼必須包含於過程中。不能在另一個 Sub 或 Function 過程中定義一個 Sub 過程。

使用 Exit Sub 語句可以立即從 Sub 過程中退出。程序繼續執行調用 Sub 過程的語句之後的語句。可以在 Sub 過程中任意位置出現任意個 Exit Sub 語句。

與 Function 過程相似之處是:Sub 過程是一個可以獲取參數,執行一系列語句以及可改變其參數的值的獨立過程。而與 Function 過程不同之處是:Function 過程可以返回值,而 Sub 過程不能用於表達式中。

可以使用過程名並跟隨相應的參數列表來調用 Sub 過程。關於如何調用 Sub 過程的詳細說明信息,請參閱 Call 語句。 

小心 Sub 過程可以是遞歸的,即該過程可以調用自己來完成某個給定的任務。但是遞歸可能會導致堆棧溢出。

在 Sub 過程中使用的變量分爲兩類:一類是在過程內顯式聲明的,另一類則不是。在過程內顯式聲明的變量(使用 Dim 或等效方法)總是局部變量。對於那些沒有在過程中顯式聲明的變量也是局部的,除非在該過程外更高級別的位置顯式地聲明它們。

小心 過程可以使用沒有在過程內顯式聲明的變量,但只要有任何 script 級定義的名稱與之同名,就會產生名稱衝突。如果過程中引用的未聲明的變量與其他的過程、常數或變量的名稱相同,則會認爲過程引用的是Script 級的名稱。顯式聲明變量可以避免這類衝突,使用 Option Explicit 語句可強制顯式聲明變量。 


Visual Basic 語言概念  

Sub 過程
Sub 過程是包含在 Sub 語句和 End Sub 語句中的一系列 Visual Basic 語句。每次調用過程時都執行過程中的語句,從 Sub 語句後的第一個可執行語句開始,到遇到的第一個 End Sub、Exit Sub 或 Return 語句結束。

Sub 過程執行操作但並不返回值。它能夠帶參數,如呼叫代碼傳遞給它的常數、變量或表達式。

聲明 Sub 過程的語法如下所示:

[accessibility] Sub subname[(argumentlist)]
  ' Statements of the Sub procedure go here.
End Sub
可訪問性可以是 Public、Protected、Friend、Protected Friend 或 Private。

可以在模塊、類和結構中定義 Sub 過程。默認情況下它們是 Public,這意味着可以從應用程序中的任意位置調用它們。

參數聲明
聲明過程的每個參數與聲明變量的方法一樣,都是指定參數名和數據類型。也可以指定傳遞機制,以及參數是否可選。

參數列表中每個參數的語法如下所示:

[Optional] [ByVal|ByRef] [ParamArray] argumentname As datatype
如果參數是可選的,則還必須在其聲明中提供默認值,如下所示:

Optional [ByVal|ByRef] argumentname As datatype = defaultvalue
調用語法
可以使用獨立的調用語句來顯式調用 Sub 過程。不能在表達式中使用其名稱來調用它。調用語句必須提供所有非可選參數的值,並且必須用括號將參數列表括起來。如果未提供任何參數,則也可以選擇省略括號。Call 關鍵字的使用也是可選的。

調用 Sub 過程的語法如下所示:

[Call] subname[(argumentlist)]
下面的 Sub 過程通知計算機操作員應用程序將要執行哪個任務,並且還顯示一個時間戳。應用程序不是在每個任務的開頭重複此代碼,而僅是從不同的位置調用 TellOperator。每次調用都會傳遞 Task 參數中的字符串以標識開始執行的任務。

Sub TellOperator(ByVal Task As String)
  Dim Stamp As Date      ' Stamp is local to TellOperator.
  Stamp = TimeOfDay()    ' Get current time for time stamp.
  ' Use MessageBox class of System.Windows.Forms namespace.
  MessageBox.Show("Starting " & Task & " at " & CStr(Stamp))
End Sub
典型的 TellOperator 調用如下所示:

Call TellOperator("file update")
請參見
過程 | 事件處理過程 | Function 過程 | Property 過程 | 過程參數 | Sub 語句

發佈了76 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章