按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
语句应该用于决定执行两个操作中的哪一个。当你要执行多个语句时,你最好使用多行格式的
If…Then…Else语句:
If 条件 Then
如果条件为真时要执行的语句
Else
如果条件为假时要执行的语句
End If
注意,多行的If…Then…Else语句以关键字End If结束。使用上面显示的缩进使得程序结构易于阅
读。在下面的例子中,如果条件ActiveSheet。Name = “Sheet1”为真,VB就执行Then和Else之间
的语句,并且忽略Else和End If之间的语句。当条件为假时,VB就忽略Then和Else之间的语句,并
且执行Else和End If之间的代码。
If ActiveSheet。Name = 〃Sheet1〃 Then
ActiveSheet。Name = 〃My Sheet〃 MsgBox 〃This sheet has been renamed。〃
Else
MsgBox 〃This sheet name is not default。〃
End If
让我们来看看程序示例:
1。 在工程Decisions(Chap05。xls)里插入一个新模块
2。 重命名该模块为IfThenElse
3。 输入下列过程WhatTypeOfDay:
Sub WhatTypeOfDay()
Dim response As String
Dim question As String
106
… 页面 123…
Dim strmsg1 As String; strmsg2 As String
Dim myDate As Date
question = 〃Enter any date in the format mm/dd/yyyy:〃 _
& Chr(13)& 〃 (e。g。; 11/22/1999)〃
strmsg1 = 〃weekday〃
strmsg2 = 〃weekend〃
response = InputBox(question)
myDate = Weekday(CDate(response))
If myDate 》= 2 AND myDate 0 Then
ActiveCell。Offset(0; 1)。Value = 〃positive〃
ElseIf ActiveCell。Value 0),如果该值不大于0,VB将跳到下个ElseIf并检查条件
ActiveCell。Value 0 Then
ActiveCell。Offset(0; 1)。Value = 〃positive〃
ElseIf ActiveCell。Value 《 0 Then
ActiveCell。Offset(0; 1)。Value = 〃negative〃
‘End If (原文错误,多一个End If)
End If
End Sub
因为你需要运行过程WhatValue好几次来测试各种条件,所以,我们给它设置个临时的快捷键。
4。 打开立即窗口,并且输入下列语句:
Application。OnKey 〃^+y〃; 〃WhatValue〃
一旦按下回车键,VB就会运行OnKey方法将过程WhatValue赋予组合键Ctrl+Shift+Y。这个键盘快捷
键只是临时的——当你重新启动Excel后它就不起作用了。你同样也可以用Excel界面…工具菜单…
宏对话框里的选项来设置快捷键。
5。 切换到Excel界面,并激活Sheet1
6。 在单元格A1里输入0,并且按下Ctrl+Shift+Y。VB将调用过程WhatValue并在单元格B1厘米输入
“zero”
109
… 页面 126…
7。 在单元格A1里输入任意大于0的数字,并按下Ctrl+Shift+Y,VB将再次调用WhatValue。VB评估
第一种条件,因为该测试的结果为假,所以它跳到ElseIf语句。第二个条件为真,因此VB执行
Then后面的语句,并且跳过下一条语句,直接到End If。因为End If后面并没有其它的语句了,
该过程便结束了,单元格B1现在显示“positive”。
8。 在单元格A1里输入任意小于0的数字,并按下Ctrl+Shift+Y。这次,前面两个条件都返回假,
因此VB继续检查第三个条件。因为这次的测试为真,VB就在单元格B1里贴上标签“negative”
9。 在单元格A1里输入任何文本,并按下Ctrl+Shift+Y,VB的反应是“positive”,然而,这不是
个满意的答案。你也许希望VB通过显示“text”来区分开正数和文本。要使你的过程WhatValue
更“聪明”些,你就需要学习如何通过使用嵌套的If…Then语句来作一些更复杂的决定。
6。嵌套的 If…Then 语句
将一个If…Then语句或If…Then…Else语句放在另外一个If…Then语句或If…Then…Else语句里
面,你可以在你的VBA过程里作出更复杂的决定。这种一个If语句里包含另一个If指令块的结构称
为嵌套的If语句。
接下来的过程TestConditions世上节里的过程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语句都显示为不同的格式,现在你可以清楚
地看到过程使用了�