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

excel_vba_编程教程(完整版)-第35部分

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 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语句都显示为不同的格式,现在你可以清楚 
地看到过程使用了�
返回目录 上一页 下一页 回到顶部 赞(0) 踩(0)
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!