VBA中的If…Then…ElseIf 語(yǔ)句

2021-12-08 14:28 更新

很多時(shí)候,你需要檢查很多種情況,你可以使用子句ElseIf來將一些If條件結(jié)合在一起。使用If…Then…ElseIf語(yǔ)句,你可以比用前面章節(jié)中的If…Then…Else語(yǔ)句評(píng)估更多的條件。這里是If…Then…ElseIf語(yǔ)句的語(yǔ)法:


If 條件1 Then
條件1為真時(shí)要執(zhí)行的語(yǔ)句
ElseIf 條件2 Then
條件2為真時(shí)要執(zhí)行的語(yǔ)句
ElseIf 條件3 Then
條件3為真時(shí)要執(zhí)行的語(yǔ)句
ElseIf 條件N Then
條件N為真時(shí)要執(zhí)行的語(yǔ)句
Else
所有條件都為假時(shí)要執(zhí)行的語(yǔ)句
End If

Else子句是可選的;如果當(dāng)所有條件為假時(shí),沒有要執(zhí)行的操作,那么你就可以忽略它。

技巧:ElseIf子句
你的程序里可以包括任何多個(gè)ElseIf子句和條件。ElseIf子句總是出現(xiàn)在Else子句之前的,只有當(dāng)ElseIf子句的條件為真時(shí),它的語(yǔ)句才會(huì)被執(zhí)行。我們來看看下述例子:

If ActiveCell.Value = 0 Then
    ActiveCell.Offset(0, 1).Value = "zero"
    ElseIf ActiveCell.Value >0 Then
             ActiveCell.Offset(0, 1).Value = "positive"
    ElseIf ActiveCell.Value <0 Then
             ActiveCell.Offset(0, 1).Value = "negative"
End If

該例檢查當(dāng)前單元格的值,并且在相鄰的列貼上適當(dāng)?shù)摹皹?biāo)簽”(零,正和負(fù))。注意,此時(shí)沒有使用Else子句。如果第一種情況(ActiveCell.Value = 0)為假,VB將跳到下一個(gè)ElseIf語(yǔ)句,并且評(píng)估該條件(ActiveCell.Value>0),如果該值不大于0,VB將跳到下個(gè)ElseIf并檢查條件ActiveCell.Value<0。


我們來看看If…Then…Else語(yǔ)句在一個(gè)完整的過程中如何工作:


1.  在當(dāng)前工程里插入一新模塊


2.  重命名模塊為IfThenElseIf


3.  輸入下列過程WhatValue:

Sub WhatValue()
    Range("A1").Select
    If ActiveCell.Value = 0 Then
            ActiveCell.Offset(0, 1).Value = "zero"
       ElseIf ActiveCell.Value > 0 Then
            ActiveCell.Offset(0, 1).Value = "positive"
       ElseIf ActiveCell.Value < 0 Then
            ActiveCell.Offset(0, 1).Value = "negative"
       ‘End If (原文錯(cuò)誤,多一個(gè)End If)
     End If
End Sub

因?yàn)槟阈枰\(yùn)行過程WhatValue好幾次來測(cè)試各種條件,所以,我們給它設(shè)置個(gè)臨時(shí)的快捷鍵。


4.  打開立即窗口,并且輸入下列語(yǔ)句:

Application.OnKey "^+y", "WhatValue"

一旦按下回車鍵,VB就會(huì)運(yùn)行OnKey方法將過程WhatValue賦予組合鍵Ctrl+Shift+Y。這個(gè)鍵盤快捷鍵只是臨時(shí)的——當(dāng)你重新啟動(dòng)Excel后它就不起作用了。你同樣也可以用Excel界面-工具菜單-宏對(duì)話框里的選項(xiàng)來設(shè)置快捷鍵。



5.  切換到Excel界面,并激活Sheet1


6.  在單元格A1里輸入0,并且按下Ctrl+Shift+Y。VB將調(diào)用過程WhatValue并在單元格B1厘米輸入“zero”


7.  在單元格A1里輸入任意大于0的數(shù)字,并按下Ctrl+Shift+Y,VB將再次調(diào)用WhatValue。VB評(píng)估第一種條件,因?yàn)樵摐y(cè)試的結(jié)果為假,所以它跳到ElseIf語(yǔ)句。第二個(gè)條件為真,因此VB執(zhí)行Then后面的語(yǔ)句,并且跳過下一條語(yǔ)句,直接到EndIf。因?yàn)镋ndIf后面并沒有其它的語(yǔ)句了,該過程便結(jié)束了,單元格B1現(xiàn)在顯示“positive”。


8.  在單元格A1里輸入任意小于0的數(shù)字,并按下Ctrl+Shift+Y。這次,前面兩個(gè)條件都返回假,因此VB繼續(xù)檢查第三個(gè)條件。因?yàn)檫@次的測(cè)試為真,VB就在單元格B1里貼上標(biāo)簽“negative”


9.  在單元格A1里輸入任何文本,并按下Ctrl+Shift+Y,VB的反應(yīng)是“positive”,然而,這不是個(gè)滿意的答案。你也許希望VB通過顯示“text”來區(qū)分開正數(shù)和文本。要使你的過程WhatValue更“聰明”些,你就需要學(xué)習(xí)如何通過使用嵌套的If…Then語(yǔ)句來作一些更復(fù)雜的決定。


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)