將一個If…Then語句或If…Then…Else語句放在另外一個If…Then語句或If…Then…Else語句里面,你可以在你的VBA過程里作出更復(fù)雜的決定。這種一個If語句里包含另一個If指令塊的結(jié)構(gòu)稱為嵌套的If語句。接下來的過程TestConditions是上節(jié)里的過程WhatValue的修正版,演示嵌套的If…Then語句是如何工作的:
Sub TestConditions()
Range("A1").Select
If IsEmpty(ActiveCell) Then
MsgBox "The cell is empty."
Else
If IsNumeric(ActiveCell.Value) Then
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
Else
ActiveCell.Offset(0, 1).Value = "text"
End If
End If
End Sub
為了使過程TestConditions更容易理解,每個If…Then語句都顯示為不同的格式,現(xiàn)在你可以清楚地看到過程使用了三個If…Then程序塊。
第一個If塊(粗體)檢查當(dāng)前單元格是否為空,如果為真,就會顯示信息,然后VB將跳過Else部分找到相應(yīng)的End If,該語句位于關(guān)鍵字End Sub之前。
如果當(dāng)前單元格不為空,IsEmpty(ActiveCell)條件返回假,并且VB運(yùn)行粗體Else下面的單下劃線的If塊。該單下劃線的If…Then…Else語句就是嵌套在第一個If塊(粗體)的。該語句檢查當(dāng)前單元格是否是個數(shù)字。注意,我們通過另一個內(nèi)置函數(shù)IsNumeric來做這個。如果當(dāng)前單元格的值不是一個數(shù)字,條件就為假,因此,VB跳到單下劃線的Else處,并且在B1里輸入“text”。然而,如果當(dāng)前單元格包含個數(shù)字時,VB就會運(yùn)行雙下劃線的If塊,評估每種情況并作出相應(yīng)的決定。
第一個If塊(粗體)被稱為外部If語句,這個外部語句包含兩個內(nèi)部的If語句(單下劃線和雙下劃線)。
技巧:嵌套語句
嵌套是指將一種控制結(jié)構(gòu)放在另外一控制結(jié)構(gòu)里面。你將在后面的循環(huán)結(jié)構(gòu)里看到更多的嵌套的例子。
Select Case 測試表達(dá)式
Case 表達(dá)式1
如果表達(dá)式1匹配測試表達(dá)式的語句
Case 表達(dá)式2
如果表達(dá)式2匹配測試表達(dá)式的語句
Case 表達(dá)式N
如果表達(dá)式N匹配測試表達(dá)式的語句
Case Else
如果沒有表達(dá)式匹配測試表達(dá)式要執(zhí)行的語句
End Select
你在關(guān)鍵字Select Case和End Select之間放置任意多個條件以測試。子句Case Else是可選的,當(dāng)你希望可能有條件表達(dá)式返回假時使用它。在Select Case語句里,VB將每個表達(dá)式和測試表達(dá)式相比較。Sub TestButtons()
Dim question As String
Dim bts As Integer
Dim myTitle As String
Dim myButton As Integer
question = "Do you want to open a new workbook?"
bts = vbYesNoCancel + vbQuestion + vbDefaultButton1
myTitle = "New Workbook"
myButton = MsgBox(prompt:=question, buttons:=bts, _ title:=myTitle)
Select Case myButton
Case 6
Workbooks.Add
Case 7
MsgBox "You can open a new book manually later."
Case Else
MsgBox "You pressed Cancel."
End Select
End Sub
Select Case myButton
Case vbYes
Workbooks.Add
Case vbNo
MsgBox "You can open a new book manually later."
Case Else
MsgBox "You pressed Cancel."
End Select
Select Case myButton
Case vbYes
Workbooks.Add
Case vbNo
MsgBox "You can open a new book manually later."
Case vbCancel
MsgBox "You pressed Cancel."
End Select
4. 運(yùn)行過程TestButtons三次,每次選擇一個不同的按鈕。
更多建議: