- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VBA中嵌套的If…Then语句和Select Case语句
VBA中嵌套的If…Then语句和Select Case语句
将⼀个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) T en
MsgBox T e cell is empty .
Else
If IsNumeric(ActiveCell.Value) T en
If ActiveCell.Value = 0 T en
ActiveCell.Offset(0, 1).Value =zero
ElseIf ActiveCell.Value 0 T en
ActiveCell.Offset(0, 1).Value =positive
ElseIf ActiveCell.Value 0 T en
ActiveCell.Offset(0, 1).Value =negative
End If
Else
ActiveCell.Offset(0, 1).Value = text
End If
End If
End Sub
为了使过程TestConditions更容易理解,每个If …Then语句都显⽰为不同的格式,现在
你可以清楚地看到过程使⽤了三个If …Then程序块。
第⼀个If块 (粗体)检查当前单元格是否为空,如果为真,就会显⽰信息,然后VB将
跳过Else部分找到相应的End If ,该语句位于关键字End Sub之前。
如果当前单元格不为空,IsEmpty(ActiveCell)条件返回假,并且VB运⾏粗体Else下⾯
的单下划线的If块。该单下划线的If …Then …Else语句就是嵌套在第⼀个If块 (粗体)
的。该语句检查当前单元格是否是个数字。注意,我们通过另⼀个内置函数Is umeric
来做这个。如果当前单元格的值不是⼀个数字,条件就为假,因此,VB跳到单下划
线的Else处,并且在B 1⾥输⼊“text” 。然⽽,如果当前单元格包含个数字时,VB就会
运⾏双下划线的If块,评估每种情况并作出相应的决定。
第⼀个If块 (粗体)被称为外部If语句,这个外部语句包含两个内部的If语句 (单下划
线和双下划线)。
技巧:嵌套语句
嵌套是 将⼀种控制结构放在另外⼀控制结构⾥⾯。你将在后⾯的循环结构⾥看到更
多的嵌套的例⼦。
Select Case语句
为了避免难以弄清的复杂的嵌套的If语句,你可以使⽤Select Case语句代替。它的语法
为:
Select Case 测试表达式
Case 表达式1
如果表达式1匹配测试表达式的语句
Case 表达式2
如果表达式2匹配测试表达式的语句
Case 表达式N
如果表达式N匹配测试表达式的语句
Case Else
如果没有表达式匹配测试表达式要执⾏的语句
End Select
你在关键字Select Case和End Select之间放置任意多个条件以测试。⼦句Case Else是可
选的,当你希望可能有条件表达式返回假时使⽤它。在Select Case语句⾥,VB将每个
表达式和测试表达式相⽐较。
这⾥是Select Case语句背后的逻辑。当VB遇到Select Case⼦句,它记下测试表达式的
值。然后它前进到下⾯的第⼀个Case⼦句,如果这个表达式的值和测试表达式的值匹
配的话,VB就会执⾏语句直到遇到另外⼀个Case⼦句并且跳到EndSelect语句。然
⽽,如果第⼀个Case⼦句后⾯的表达式测试结果和测试表达式不匹配时,VB就会检查
每⼀个Case⼦句,直到它找到⼀个匹配的为⽌。如果没有⼀个Case⼦句后⾯的表达式
匹配测试表达式的值的话,VB就会跳到Case Else⼦句并执⾏该语句直到遇到关键字
EndSelect 。注意,CaseElse⼦句是
文档评论(0)