《excel_vba_编程教程(完整版)》

下载本书

添加书签

excel_vba_编程教程(完整版)- 第39节


按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
     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 
小提示:按 回车 [Enter] 键 返回书目,按 ← 键 返回上一页, 按 → 键 进入下一页。 赞一下 添加书签加入书架