程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> VisualBasic變量、常數和數據類型及過程概述六

VisualBasic變量、常數和數據類型及過程概述六

編輯:VB綜合教程

  提供可選參數的缺省值
  
  也可以給可選參數指定缺省值。在下例中,如果未將可選參數傳遞到函數過程,則返回一個缺省值。
  SubListText(xAsString,OptionalyAs_
  Integer=12345)
    List1.AddItemx
    List1.AddItemy
  EndSub
  
  PrivateSubCommand1_Click()
    strName="yourname"   '未提供第二個參數。
    CallListText(strName)   '添加“yourname”和“12345”。
  EndSub
  使用不定數量的參數一般說來,過程調用中的參數個數應等於過程說明的參數個數。可用ParamArray關鍵字指明,過程將接受任意個數的參數。於是可以這樣來編寫計算總和的Sum函數:
  DimxAsInteger
  DimyAsInteger
  DimintSumAsInteger
  
  SubSum(ParamArrayintNums())
     ForEachxInintNums
     y=y x
     Nextx
     intSum=y
  EndSub
  
  PrivateSubCommand1_Click()
     Sum1,3,5,7,8
     List1.AddItemintSum
  EndSub
  
  用命名的參數創建簡單語句
  對許多內建函數、語句和方法,VisualBasic提供了命名參數方法來快捷傳遞參數值。對命名參數,通過給命名參數賦值,就可按任意次序提供任意多參數。為此,鍵入命名參數,其後為冒號、等號和值(MyArgument:="SomeValue"),可以按任意次序安排這些賦值,它們之間用逗號分開。注意,下例中的參數順序和所要參數的順序相反:
  FunctionListText(strNameAsString,OptionalstrAddressAsString)
     List1.AddItemstrName
     List2.AddItemstrAddress
  EndSub
  
  PrivateSubCommand1_Click()
     ListTextstrAddress:="12345",strName:="YourName"
     EndSub
  如果過程有若干不必總要指定的可選參數,則上述內容更為有用。
  
  確定對命名參數的支持
  要確定哪一個函數、語句和方法支持命名參數,用“代碼”窗口中的“AutoQuickInfo”功能,檢查“對象浏覽器”,或者參閱語言參考。使用命名參數時要注意以下幾點:
   在VisualBasic(VB)對象庫中的對象的方法不支持命名參數。而VisualBasicforapplications(VBA)對象庫中的所有的語言關鍵字都支持命名的參數。
   在語法中,命名參數是用粗體和斜體字表示的。所有其它參數只用斜體字表示。
  重點使用命名參數時不能省略所需參數的輸入。可以只省略可選參數。對於VisualBasic(VB)和VisualBasicforapplications(VBA)對象庫,“對象浏覽器”對話框將可選參數用方括號[]括起來。
  詳細信息請參閱語言參考中的"ByVal"、"ByRef"、"Optional"和"ParamArray"。
  
  控制結構概述
  有了控制結構就可控制程序執行的流程。如果未復選控制流語句,程序便從左至右、自頂向下地貫穿這些語句。有些簡單程序可以只用單向流程來編寫,有些流程可以依靠運算符的優先級來控制,但任何編程語言的效力和用途皆由其通過結構和循環改變語句順序的能力而得。
  
  判定結構
  VisualBasic過程能夠測試條件式,然後根據測試結果執行不同的操作。
  VisualBasic支持的判定結構有:
  1.If...Then
  2.If...Then...Else
  3.SelectCase
  If...Then
  用If...Then結構有條件地執行一個或多個語句。單行語法和多行塊語法都可以使用:
  IfconditionThenstatement
  IfconditionThen
    statements
  EndIf
  condition通常是比較式,但它可以是任何計算數值的表達式。VisualBasic將這個值解釋為True或False:一個為零的數值為False,而任何非零數值都被看作True。若condition為True,則VisualBasic執行Then關鍵字後面的所有statements。可以使用單行或多行語法有條件地執行一個語句(下面兩個例子等價):
  IfanyDate<NowThenanyDate=Now
  
  IfanyDate<NowThen
     anyDate=Now
  EndIf
  注意:If...Then的單行格式不用EndIf語句。如果condition為True時要執行多行代碼,則必須使用多行塊If...Then...EndIf語法。
  IfanyDate<NowThen
     anyDate=Now
     Timer1.Enabled=False   '定時器控制失效。
  EndIf
  
  If...Then...Else
  用If...Then...Else塊定義幾個語句塊,執行其中一個語句:
  Ifcondition1Then
     [statementblock-1]
  [ElseIfcondition2Then
     [statementblock-2]]...
  [Else
     [statementblock-n]]
  EndIf
  VisualBasic首先測試condition1。如果它為False,VisualBasic就測試condition2,依此類推,直到找到一個為True的條件。當它找到一個為True的條件時,VisualBasic就會執行相應的語句塊,然後執行EndIf後面的代碼。作為一個選擇,可以包含Else語句塊,如果條件都不是True,則VisualBasic執行Else語句塊。
  If...Then...ElseIf只是If...Then...Else的一個特例。注意,可以使用任意數量的ElseIf子句,或者一個也不用。可以有一個Else子句,而不管有沒有ElseIf子句。
  例如,應用程序可以根據菜單控件數組中哪個控件被單擊而采取相應的動作:
  PrivateSubmnuCut_Click(IndexAsInteger)
    IfIndex=0Then   '“剪切”命令。
     CopyActiveControl   '調用通用過程。
     ClearActiveControl
    ElseIfIndex=1Then   '“復制”命令。
     CopyActiveControl
    ElseIfIndex=2Then   '“清除”命令。
     ClearActiveControl
    Else     '“粘貼”命令。
     PasteActiveControl
    EndIf
  EndSub
  注意,總是可以添加更多的ElseIf塊到If...Then結構中去。但是,當每個ElseIf都將相同的表達式比作不同的數值時,這個結構編寫起來很乏味。在這種情況下可以使用SelectCase判定結構。
  詳細信息請參閱《VisualBasic6.0語言參考手冊》中的“If...Then...Else語句”。
  
  SelectCase
  VisualBasic提供SelectCase結構替代If...Then...Else,從而可在多個語句塊中有選擇地執行其中一個。SelectCase語句的能力與If...Then...Else語句類似,但對多重選擇的情況,SelectCase語句使代碼更加易讀。
  SelectCase在結構的上方處理一個測試表達式並只計算一次。然後,VisualBasic將表達式的值與結構中的每個Case的值進行比較。如果相等,就執行與該Case相關聯的語句塊。
  SelectCasetestexpression
    [Caseexpressionlist1
     [statementblock-1]]
    [Caseexpressionlist2
     [statementblock-2]]
     .
     .
     .
    [CaseElse
     [statementblock-n]]
  
  EndSelect
  每一個expressionlist是一個或幾個值的列表。如果在一個列表中有多個值,就用逗號把值隔開。每一個statementblock中含有零個或多個語句。
  如果不止一個Case與測試表達式相匹配,則只對第一個匹配的Case執行與之相關聯的語句塊。如果在表達式列表中沒有一個值與測試表達式相匹配,則VisualBasic執行CaseElse子句(此項是可選的)中的語句。
  例如,假定在If...Then...Else的例子中要向“編輯”菜單添加命令。為此可以另加一個ElseIf子句,或用SelectCase來寫函數:
  PrivateSubmnuCut_Click(IndexAsInteger)
     SelectCaseIndex
    Case0    '“剪切”命令。
    CopyActiveControl  '調用通用過程。
    ClearActiveControl
    Case1    '“復制”命令。
    CopyActiveControl
    Case2    '“清除”命令。
    ClearActiveControl
    Case3    '“粘貼”命令。
    PasteActiveControl
    CaseElse
    frmFind.Show   '顯示找到的對話框。
     EndSelect
  EndSub
  注意SelectCase結構每次都要在開始處計算表達式的值。而If...Then...Else結構為每個ElseIf語句計算不同的表達式。只有在If語句和每一個ElseIf語句計算相同表達式時,才能用SelectCase結構替換If...Then...Else結構。
  

->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved