VisualBasic變量、常數(shù)和數(shù)據(jù)類型及過程概述六

字號:

提供可選參數(shù)的缺省值
     也可以給可選參數(shù)指定缺省值。在下例中,如果未將可選參數(shù)傳遞到函數(shù)過程,則返回一個缺省值。
     Sub ListText(x As String, Optional y As _
     Integer = 12345)
     List1.AddItem x
     List1.AddItem y
     End Sub
     Private Sub Command1_Click ()
     strName = "yourname"     '未提供第二個參數(shù)。
     Call ListText (strName)   '添加“yourname”和“12345”。
     End Sub
     使用不定數(shù)量的參數(shù)一般說來,過程調(diào)用中的參數(shù)個數(shù)應(yīng)等于過程說明的參數(shù)個數(shù)??捎肞aramArray 關(guān)鍵字指明,過程將接受任意個數(shù)的參數(shù)。于是可以這樣來編寫計算總和的 Sum 函數(shù):
     Dim x As Integer
     Dim y As Integer
     Dim intSum As Integer
     Sub Sum (ParamArray intNums ())
      For Each x In intNums
        y = y + x
      Next x
      intSum = y
     End Sub
     Private Sub Command1_Click ()
      Sum 1, 3, 5, 7, 8
      List1.AddItem intSum
     End Sub
     用命名的參數(shù)創(chuàng)建簡單語句
     對許多內(nèi)建函數(shù)、語句和方法,Visual Basic 提供了命名參數(shù)方法來快捷傳遞參數(shù)值。對命名參數(shù),通過給命名參數(shù)賦值,就可按任意次序提供任意多參數(shù)。為此,鍵入命名參數(shù),其后為冒號、等號和值 (MyArgument :="SomeValue") ,可以按任意次序安排這些賦值,它們之間用逗號分開。注意,下例中的參數(shù)順序和所要參數(shù)的順序相反:
     Function ListText (strName As String, Optional strAddress As String)
      List1.AddItem strName
      List2.AddItem strAddress
     End Sub
     Private Sub Command1_Click ()
      ListText strAddress:="12345", strName:="Your Name"
      End Sub
     如果過程有若干不必總要指定的可選參數(shù),則上述內(nèi)容更為有用。
     確定對命名參數(shù)的支持
     要確定哪一個函數(shù)、語句和方法支持命名參數(shù),用“代碼”窗口中的“AutoQuickInfo”功能,檢查“對象瀏覽器”,或者參閱語言參考。使用命名參數(shù)時要注意以下幾點:
    在 Visual Basic (VB) 對象庫中的對象的方法不支持命名參數(shù)。而 VisualBasic for applications (VBA) 對象庫中的所有的語言關(guān)鍵字都支持命名的參數(shù)。
    在語法中,命名參數(shù)是用粗體和斜體字表示的。所有其它參數(shù)只用斜體字表示。
     重點 使用命名參數(shù)時不能省略所需參數(shù)的輸入??梢灾皇÷钥蛇x參數(shù)。對于 Visual Basic (VB) 和 Visual Basic for applications (VBA) 對象庫,“對象瀏覽器”對話框?qū)⒖蛇x參數(shù)用方括號 [ ] 括起來。
     詳細信息 請參閱語言參考中的 "ByVal"、"ByRef"、"Optional" 和"ParamArray"。
    控制結(jié)構(gòu)概述
     有了控制結(jié)構(gòu)就可控制程序執(zhí)行的流程。如果未復(fù)選控制流語句,程序便從左至右、自頂向下地貫穿這些語句。有些簡單程序可以只用單向流程來編寫,有些流程可以依靠運算符的優(yōu)先級來控制,但任何編程語言的效力和用途皆由其通過結(jié)構(gòu)和循環(huán)改變語句順序的能力而得。
     判定結(jié)構(gòu)
     Visual Basic 過程能夠測試條件式,然后根據(jù)測試結(jié)果執(zhí)行不同的操作。
     Visual Basic 支持的判定結(jié)構(gòu)有:
     1.If...Then
     2.If...Then...Else
     3.Select Case
     If...Then
     用 If...Then 結(jié)構(gòu)有條件地執(zhí)行一個或多個語句。單行語法和多行塊語法都可以使用:
     If condition Then statement
     If condition Then
     statements
     End If
     condition 通常是比較式,但它可以是任何計算數(shù)值的表達式。Visual Basic 將這個值解釋為 True 或 False:一個為零的數(shù)值為 False,而任何非零數(shù)值都被看作 True。若 condition 為 True,則 Visual Basic 執(zhí)行 Then 關(guān)鍵字后面的所有 statements??梢允褂脝涡谢蚨嘈姓Z法有條件地執(zhí)行一個語句(下面兩個例子等價):
     If anyDate < Now Then anyDate = Now
     If anyDate < Now Then
      anyDate = Now
     End If
     注意:If...Then 的單行格式不用 End If 語句。如果 condition 為 True 時要執(zhí)行多行代碼,則必須使用多行塊 If...Then...End If 語法。
     If anyDate < Now Then
      anyDate = Now
      Timer1.Enabled = False     '定時器控制失效。
     End If
     If...Then...Else
     用 If...Then...Else 塊定義幾個語句塊,執(zhí)行其中一個語句:
     If condition1 Then
      [statementblock-1]
     [ElseIf condition2 Then
      [statementblock-2]] ...
     [Else
      [statementblock-n]]
     End If
     Visual Basic 首先測試 condition1。如果它為 False,Visual Basic就測試condition2,依此類推,直到找到一個為 True 的條件。當它找到一個為 True的條件時,Visual Basic就會執(zhí)行相應(yīng)的語句塊,然后執(zhí)行 End If 后面的代碼。作為一個選擇,可以包含 Else 語句塊,如果條件都不是 True,則 VisualBasic 執(zhí)行 Else 語句塊。