友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
飞读中文网 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

excel_vba_编程教程(完整版)-第44章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



来。  
如果当条件为真需要执行很多语句或将要执行的语句及其长时,多行的If…Then语句会更清楚,如 
下例所示:  
If ActiveSheet。Name = 〃Sheet1〃 Then   
ActiveSheet。Move after:=Sheets _   
(Worksheetsunt)   
End If  
在这个例子中,VB将会检查当前工作表的名称。如果它是“Sheet1”,条件ActiveSheet 。Name =  
 “Sheet1”将为真,并且VB将继续执行关键字Then后面的代码行。结果,当前工作表将会被移动到 
工作簿的最后。  
9。  按下面方法修改过程SimpleIfThen里的第一个If语句:  
If weeks  52 Then MsgBox 〃Try Again〃 : SimpleIfThen   
我们在原来的过程SimpleIfThen后面加上一个冒号和SimpleIfThen过程名称。如果用户输入了不正 
确的答案,他将看到一信息,并且他一旦点击确定按钮后,他将获得另外一次机会来提供正确的答 
案——输入框将再次出现。用户将能够不断地猜测答案,事实上,他不能适当地推出该过程,直到 
他提供了正确的答案。如果他点击了取消按钮,他将不得不去处理不友好的错误信息“类型不匹配”。 
在上章里,你看到了如何使用On Error GoTo标志语句来绕过错误,至少你在第十三章里学习更多 
的关于错误处理的知识之前,你可以那么做。现在,你可以这样来修改你的过程SimpleIfThen:  
Sub SimpleIfThen()   
  Dim weeks As String   
   On Error GoTo VeryEnd   
  weeks = InputBox(〃How many weeks are in a year:〃; 〃Quiz〃)   
   If weeks52 Then MsgBox 〃Try Again〃: SimpleIfThen   
   If weeks=52 Then MsgBox 〃Congratulations!〃   
  VeryEnd:   
End Sub   

                                            104 

… 页面 121…

10。 运行几遍过程SimpleIfThen,提供一些不正确的答案。你在程序里面加的错误捕捉指令使得用 
    户可以推出猜测,而不必面对这可恶的错误信息。  

3。基于多于一个条件的决定  

在上面段落里的过程SimpleIfThen里,If…Then语句仅评估一个条件,然而,这个语句可以使用一 
个以上的条件。你必须使用逻辑运算符AND和OR(参见本章前面的表5…2)来明确If…Then语句里的 
多个条件。这里是使用AND运算符的语法:  
If 条件1 AND 条件2 Then 语句  
在上面的语法例,条件1和条件2都必须为真,VB才会执行关键字Then右边的语句。例如:  
If sales = 10000 AND salary = 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 
返回目录 上一页 下一页 回到顶部 1 1
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!