rebate = (price * units) * 0。1
Range(〃A4〃)。Value = 〃The rebate is: 〃 & rebate
End If
If price = 7 AND units 《 50 Then
Range(〃A4〃)。Value = strmsg1 & 50 … units & 〃 unit(s)。〃
End If
If price 7 AND units 》= 50 Then
Range(〃A4〃)。Value = strmsg2
End If
If price 7 AND units 《 50 Then
Range(〃A4〃)。Value = 〃You didn't meet the criteria。〃
End If
End Sub
上面的过程IfThenAnd使用了四个If…Then语句来评估两个变量price和units的内容。在If…Then
关键字之间的运算符AND使得测试多于一个的条件成为可能。使用了AND运算符时,所有条件都必须
为真,VB才会去执行关键字Then和End之间的语句。因为过程的运行依赖于工作表单元格里输入的
数据,所以从Excel窗口来运行它比较方便。
2。 切换到Excel应用窗口,并且选择“工具”…“宏”…“运行宏”
105
… 页面 122…
3。 在宏对话框里,选择IfThenAnd并点击“选项”按钮
4。 给你的宏设置快捷键:Ctrl+Shift+I,并且退出宏对话框
5。 在工作表里输入以下数据:
6。 按下Ctrl+Shift+I运行过程IfThenAnd
7。 改变单元格B1和B2的值,以便你每次运行该过程时,不同的If…Then语句为真
技巧5…2 If指令块和缩进
要使If程序块更容易阅读和理解,可以使用缩进。对比下面的代码书写:
If condition Then
action1
End If
If condition Then
action
End If
看看下面的代码,你可以轻易知道该程序块开始在哪里,结尾又在哪里。
4。The If…Then…Else 语句
现在,你知道当一个或多个条件为真或为假时如何显示信息或采取行动。然而,如果你的程序需要
在条件为真时采取某个行动,而条件为假时采取另外一个行动,应该怎么办呢?你可以通过添加一
个Else子句就可以根据测试的结果将你的过程引导到一个合适的语句。If…Then…Else语句有两种
格式——单行和多行。单行的格式为:
If 条件 Then 语句1 Else 语句2
当条件为真时,执行关键字Then后面的语句,当条件为假时,则执行Else后面的语句。例如:
If Sales》5000 Then Bonus = Sales * 0。05 Else MsgBox “No Bonus”
如果储存在变量Sales的值大于5000的话,那么VB将使用下述公式:Sales * 0。05来计算股红
(bonus)。然而,如果变量Sales不大于5000的话,VB就会显示信息“No Bonus”。If…Then…Else
语句应该用于决定执行两个操作中的哪一个。当你要执行多个语句时,你最好使用多行格式的
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