VB考試教程:過程之子過程

字號:

2、 子過程(Sub過程)
    子過程是在響應(yīng)事件時執(zhí)行的程序段。將模塊中的代碼分成子過程后,在應(yīng)用程序中查找和修改代碼變得更容易了,子過程類似于用戶自定義函數(shù),不同之處是子過程不返回與其名稱相關(guān)聯(lián)的值,子過程一般用來從用戶那里得到輸入數(shù)據(jù)、顯示或打印信息,或者操縱與某一條件相關(guān)的幾種屬性。子過程也用來在過程調(diào)用中處理和返回若干個變量。大多數(shù)函數(shù)只能返回一個值,但子過程卻能夠返回多個值。
    (1)定義Sub子過程
    定義子過程的語法格式:
    [Private|Public|Friend][Static]Sub過程名[(參數(shù)列表)]
     [程序段]
    [Exit sub]
     [程序段]
    End Sub
    例如:
    Private Sub Subtest()
     Print"This is a Sub procedure"
    End Sub
    說明:
    1)Sub過程以Sub開頭,以End Sub結(jié)束,在Sub和End Sub之間是描述過程操作的語句塊,稱為“過程體”或“子程序體”。
    格式中個參量的含義如下:
     Public(可選的):表示Sub過程是公有過程,可以在程序的任何地方調(diào)用它。各窗體通用的過程通常在標(biāo)準(zhǔn)模塊中用Public定義,在窗體層定義的通用過程一般在本窗體中使用,也可以在其它窗體模塊中使用。
     Private(可選的):表示Sub過程是私有的,只能被本模塊中的其它過程訪問,不能被其它模塊中的過程訪問。
     Friend(可選的):只能在類模塊中使用。表示該Sub過程在整個工程中都可見的,但對對象實例的控件者是不可見的。
     Static(可選的):表示在每次調(diào)用過程時,局部變量的值保持不變。如果省略Static,則局部變量默認(rèn)為”自動“的,即在每次調(diào)用過程時,局部變量被初始化為0或空字符串。Static屬性對在Sub外聲明的變量不會產(chǎn)生影響,即使過程中也使用了這些變量。
    注:如果沒有使用Private,Public或Friend等,Sub過程在缺省情況是公用的。
     過程名(必需的):Sub的名稱遵循標(biāo)準(zhǔn)的變量命名約定。在同一個模塊中,同一個變量名不能既做Sub過程名,又做Function過程名。
     參數(shù)列表(可選的):代表在調(diào)用時要傳遞給Sub過程的參數(shù)的變量列表。如果不止一個參數(shù),則由逗號分開。
    “參數(shù)列表”指明了調(diào)用時傳送給過程的參數(shù)的類型和個數(shù),每個參數(shù)的格式為:
     [ByVal]變量名[()][As數(shù)據(jù)類型]
    這里的“變量名”是合法的VB變量名或數(shù)組名,如果是數(shù)組,則要在數(shù)組名后面加一對括號;
    “數(shù)據(jù)類型”指的是變量的類型,如果省略,則默認(rèn)為Variant;
    變量名前面的“ByVal”是可選的。如果加上ByVal,則表明該參數(shù)是“傳值”參數(shù),否則為“引用”參數(shù)。關(guān)于這方面內(nèi)容將在后面詳細(xì)介紹。
    2)在過程體內(nèi)可以用一個或多個Exit Sub 語句,執(zhí)行從一個Sub過程中退出。
    3)Sub過程不能嵌套。也就是說,在Sub過程內(nèi),不能定義Sub過程或Function過程;不能使用GoSub,GoTo或Return來進(jìn)入或退出Sub過程,只能通過調(diào)用執(zhí)行Sub過程,而且可以嵌套調(diào)用。
    4)Sub過程可以是遞歸的,也就是說,該過程可以調(diào)用自己來完成某個特定的任務(wù)。不過,遞歸可能會導(dǎo)致堆棧上溢。通常Static關(guān)鍵字和遞歸的Sub過程不在一起使用。
    5)在過程調(diào)用中,發(fā)送到子過程的參數(shù)值和類型必須與子過程聲明語句中參數(shù)值和類型相符。
    下面是一個Sub過程的例子:
     Sub Tryout(x As Integer,ByVal y As Integer)
     x=x+100
     y=y*6
     print x,y
     End Sub
    上面的過程有兩個形式參數(shù),其中第二個前面有ByVal,表明該參數(shù)是一個傳值參數(shù)。
    過程可以有參數(shù),也可以不帶任何參數(shù)——稱無參過程。如下例:
     Sub ContinueQuery()
     Do
     Response$=InputBox$("Continue(Y or N)?")
     If Response$="N" Or Response$="n" Then End
     If Response$="Y" Or Response$="y" Then Exit Do
     Loop
     End Sub
    對于無參過程,調(diào)用時只寫過程名即可。
    (2)建立Sub過程
    Sub過程可以在標(biāo)準(zhǔn)模塊中建立,也可以在窗體模塊中建立。
    在標(biāo)準(zhǔn)模塊中建立過程的方法有兩種。
    第一種方法操作步驟為:
    1)“添加模塊”,同時打開模塊“代碼窗口”;
    2)“工具”菜單/“添加過程”命令,打開“添加過程”對話框;
    3)在“名稱”框中輸入要建立的過程的名字(例如Tryout);
    4)在類型欄內(nèi)選擇要建立的過程的類型。如果建立子過程,則選擇“子過程”,同樣,如果建立的是函數(shù)過程,則選擇“函數(shù)過程”;
    5)在范圍欄內(nèi)選擇過程的適用范圍。選擇“公有的”,則建立的過程可用于本工程內(nèi)所有窗體模塊,選擇“私有的”,只能用于本標(biāo)準(zhǔn)模塊。