和Case子句一起使用Is的方法

2021-12-08 14:29 更新

有時候,作決定是基于測試表達(dá)式的條件,例如它是否大于,小于,等于或使用一些其它的關(guān)系運算符(參見表5-1)。關(guān)鍵字Is使你能夠在Case子句里使用條件表達(dá)式。使用關(guān)鍵字Is的SelectCase語句的語法如下:




表5-1 VBA中的關(guān)系運算符

Select Case 測試表達(dá)式

Case Is 條件1


    如果條件1為真時執(zhí)行的語句


Case Is 條件2


    

如果條件2為真時執(zhí)行的語句


Case Is 條件N


    

如果條件N為真時執(zhí)行的語句


End Select



例如,我們來比較幾個數(shù)字:

Select Case myNumber
     Case Is <10
              MsgBox "The number is less than 10"
     Case 11
              MsgBox "You entered eleven."
     Case Is >=100
              MsgBox "The number is greater than or equal to 100."
     Case Else
              MsgBox "The number is between 12 and 99."
End Select

假設(shè)變量myNumber為120,那么第三個Case子句為真,并且只有Case Is >=100和Case Else之間的語句會被執(zhí)行。

確定Case子句里數(shù)值的范圍

在前面的例子里,你看到了在每個Case子句里使用一個簡單表達(dá)式。然而,很多時候,你可能需要在Case子句里確定一個數(shù)值范圍。可以通過關(guān)鍵字To用于表達(dá)式的數(shù)值之間來實現(xiàn)它,如下所示:
Select Case unitsSold
     Case 1 to 100
              Discount = 0.05
     Case Is <= 500
              Discount = 0.1
     Case 501 to 1000
              Discount = 0.15
     Case Is >1000
              Discount = 0.2
End Select
我們來分析一下上面的Select Case代碼塊,假設(shè)變量unitsSold當(dāng)前值為99。VB將變量unitsSold的值與Case子句的條件表達(dá)式進(jìn)行比較。第一和第三條Case子句示范如何通過使用關(guān)鍵字To在條件表達(dá)式里使用數(shù)值范圍。因為unitsSold=99,第一個Case子句里的條件表達(dá)式為真,因此,VB將0.05賦給變量Discount。第二個Case子句如何呢?它也為真。盡管,很明顯99小于等于500,VB不會執(zhí)行相關(guān)的語句Discount=0.1。原因是,一旦VB找到了一個真條件的Case子句,它就不會去管其它的Case子句,它將跳過那些代碼,繼續(xù)執(zhí)行End Select語句后面可能有的語句。

我們來練練使用Select Case語句,在函數(shù)過程里使用它?;叵朐谇懊娴恼鹿?jié)里,函數(shù)過程允許你將結(jié)果返回給一個子過程。假設(shè)該子過程必須根據(jù)銷售的套數(shù)來顯示一個折扣,你可以從用戶那里獲得銷售套數(shù),然后允許一個函數(shù)來確定需要的折扣:

1.  在模塊SelectCase里輸入下列子過程:
Sub DisplayDiscount()
    Dim unitsSold As Integer
    Dim myDiscount As Single
    unitsSold = InputBox("Enter the number of sold units:")
    myDiscount = GetDiscount(unitsSold)
    MsgBox myDiscount
End Sub

2.  輸入下列函數(shù)過程:
Function GetDiscount(unitsSold As Integer)
    Select Case unitsSold
        Case 1 To 200
             GetDiscount = 0.05
        Case Is <=500
             GetDiscount = 0.1
        Case 501 To 1000
             GetDiscount = 0.15
        Case Is >1000
             GetDiscount = 0.2
    End Select
End Function
3.  將光標(biāo)放在過程DisplayDiscount的任意地方并且按下F5來運行它。過程DisplayDiscount將儲存于變量unitsSold的值傳遞給函數(shù)GetDiscount。當(dāng)VB遇到SelectCase語句時,它檢查第一個Case子句里的值是否合儲存于unitsSold里面的值是否匹配。如果匹配,VB給函數(shù)名稱賦值百分之五(0.05),并且跳到關(guān)鍵字EndSelect。因為,在函數(shù)過程里面沒有更多需要運行的語句,VB就返回主調(diào)過程——DisplayDiscount,在這里,它將函數(shù)的結(jié)果賦予變量myDiscount。最后的語句用信息框來顯示獲得的折扣。

在Case子句里確定多個表達(dá)式

你可以使用逗號明確單一Case子句里的多個表達(dá)式:
Select Case myMonth
     Case "January", "February", "March"
               Debug.Print myMonth & ": 1st Qtr."
     Case "April", "May", "June"
               Debug.Print myMonth & ": 2nd Qtr."
     Case "July", "August", "September"
               Debug.Print myMonth & ": 3rd Qtr."
     Case "October", "November", "December"
               Debug.Print myMonth & ": 4th Qtr."
End Select
技巧:Case子句的多個條件
用來分隔開Case子句里面多個條件的逗號,和用于If語句里的運算符OR意義一樣。只要這些條件有一個為真,Case子句就為真。

在本章介紹的條件語句,讓你控制你的過程走向。通過測試條件的真假,你可以決定哪些語句需要執(zhí)行,哪些要跳過。換句話說,不必從上到下,一行一行地運行你的過程,你可以只執(zhí)行某些行,如果你猶豫應(yīng)該使用哪種條件語句,這里是一些指南:

①如果你只要提供一個條件,簡單的If…Then語句是最好的選擇

②如果你要決定運行兩個條件中的一個,那么使用If…Then…Else語句
?  
③如果你的程序需要兩個或多個條件,那么使用If…Then…ElseIf或者Select Case語句
?  
④如果你的程序有很多條件,那么就使用Select  Case語句。這個語句比If…Then…ElseIf語句更靈活并且更容易理解。

有些決定是需要重復(fù)的,例如,你可能需要在工作表里的每個單元格里或者一個工作簿里的每個表里重復(fù)同樣的操作。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號