程序中经常需要做的是进行条件判断,根据不同的条件(逻辑判断),执行不同的代码 片断,VBA 中的条件判断语句有If 语句和Select Case 语句。
If...Then...Else 语句
If 表达式是根据表达式的值有条件地执行一组语句,如果条件为真,则执行其后的语 句,否则到下一个判断条件。其语法为:
If condition Then [statements][Else elsestatements] 或者,可以使用块形式的语法: If condition Then [statements]
[ElseIf condition-n Then [elseifstatements] ... [Else
2. VBA 简介 32
Excel 与VBA 程序设计 Copyright ? 2005 马维峰
[elsestatements]] End If
If...Then...Else 语句的各部分说明见表 2-8。 表 2-8 If...Then...Else 语句各部分说明
部分 描述
condition 必要参数。一个或多个具有下面两种类型的表达式:
数值表达式或字符串表达式,其运算结果为 True 或 False。如果condition 为 Null,则condition 会视为 False。
statements 在块形式中是可选参数;但是在单行形式中,且没有 Else 子句时,则为必 要参数。一条或多条以冒号分开的语句,它们在condition 为 True 时执行。 condition-n 可选参数。与condition 同。
elseifstatements 可选参数。一条或多条语句,它们在相关的condition-n 为 True 时执行。 elsestatements 可选参数。一条或多条语句,它们在前面的condition 或condition-n 都不 为 True 时执行。
If 语句可以使用单行形式(第一种语法),但是块形式(第二种语法)则提供了更强的 结构化与适应性,并且通常也是比较容易阅读、维护及调试,推荐使用。
使用判断语句需要使用比较运算符来构造需要的条件表达式。条件表达式是用来比较 2 个或多个数值并判断其大小,最后返回True 或者False(表 2-9)。 表 2-9 比较运算符
比较运算符 描述 = 比较2 个值是否相等
< 比较左侧的值是否小于右侧的值
> 比较左侧的值是否大于右侧的值 <= 比较左侧的值是否小于等于右侧的值 >= 比较左侧的值是否大于等于右侧的值 <> 比较左右两侧的值是否不等
在使用判断语句时,也会使用到以下逻辑运算符。
1. And 运算符:通过“result = expression1 And expression2”使用,如果两个表达式 的值都是True,则result 是True。如果其中一个表达式的值是False,则result 是 False。
2. Not 运算符:通过“result = Not expression”使用,如果expression 是True,则返 回False,否则返回True。
3. Or 运算符:使用同And 运算符,如果两个表达式的值有一个是True,则result
2. VBA 简介 33
Excel 与VBA 程序设计 Copyright ? 2005 马维峰
是 True。如果两个表达式的值都是False,则result 是False。
下面举一个简单的例子,用来判断输入数据有几位,来说明 If 语句的使用。 Dim Number, Digits, MyString Number = 53 '设置变量初始值。 If Number < 10 Then Digits = 1
ElseIf Number < 100 Then
'若判断结果为 True,则完成下一行语句。 Digits = 2 Else Digits = 3 End If
在 If 语句中,不要写诸如 If bResult = True Then
这样的语句,而应该这样写成这样: If bResult Then 同样的,也不要写 If bResult = False Then 而应该写成: If Not bResult Then
原因包括2 方面,第一是易于阅读,第二是因为VBA 不区分赋值和比较运算符,前
者容易引入错误。
Select Case 语句
当一个表达式与几个不同的值相比较时,可以使用Select Case 语句来交替使用在
If...Then...Else 语句中的ElseIf。If...Then...Else 语句会计算每个ElseIf 语句的不同的表达式, Select Case 语句只计算表达式一次。其语法如下: Select Case testexpression [Case expressionlist-n [statements-n]] ... [Case Else [elsestatements]] End Select
2. VBA 简介 34
Excel 与VBA 程序设计 Copyright ? 2005 马维峰
如果 testexpression 匹配某个Case expressionlist 表达式,则在Case 子句之后,直到下 一个Case 子句的statements 会被执行;如果是最后一个子句,则会执行到End Select。然 后控制权会转移到End Select 之后的语句。如果testexpression 匹配一个以上的Case 子句中 的expressionlist 表达式,则只有第一个匹配后面的语句会被执行。
Case Else 子句用于指明elsestatements,当testexpression 和所有的Case 子句中的
expressionlist 都不匹配时,则会执行这些语句。虽然不是必要的,但是在Select Case 区块 中,最好还是加上Case Else 语句来处理不可预见的testexpression 值。如果没有Case
expressionlist 匹配testexpression,而且也没有Case Else 语句,则程序会从End Select 之后 的语句继续执行。
可以在每个 Case 子句中使用多重表达式或使用范围,例如,下面的语句是正确的: Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber
在下面的示例中,Select Case 语句会计算发送给此过程的参数performance。请注意, 每个Case 语句可以包含一个以上的值,一个值的范围,或是一个值的组合以及比较运算符。 如果Select Case 语句与Case 语句的任何值相匹配,则可选的Case Else 语句运行。 Function Bonus(performance, salary) Select Case performance Case 1
Bonus = salary * 0.1 Case 2, 3
Bonus = salary * 0.09 Case 4 To 6
Bonus = salary * 0.07 Case Is > 8 Bonus = 100 Case Else Bonus = 0 End Select End Function
2.4.4. 循环语句
如果需要反复执行某一句或者某一段语句,则可以使用 VBA 的循环语句。循环允许 重复执行一组语句。某些循环重复执行语句直到条件为False(Do...Loop While);某些循 环重复执行语句直到条件为True(Do...Loop While);某些循环执行一指定次数的语句 (For…Next)或是集合中的每一个对象(For Each...Next)。以下将逐次介绍这些循环语句。
2. VBA 简介 35
Excel 与VBA 程序设计 Copyright ? 2005 马维峰
Do...Loop 语句
当条件为 True 时,或直到条件变为True 时,重复执行一个语句块中的命令。其语法 如下:
Do [{While | Until} condition] [statements] [Exit Do] [statements] Loop
或者可以使用下面这种语法: Do
[statements]
[Exit Do] [statements]
Loop [{While | Until} condition]
Do Loop 语句的语法具有以下几个部分(表 2-10): 表 2-10 Do Loop 语句各部分说明
部分 描述
condition 可选参数。数值表达式或字符串表达式,其值为True 或 False。如果condition 是 Null,则condition 会被当作False。
statements 一条或多条命令,它们将被重复当或直到condition 为True。
在 Do...Loop 中可以在任何位置放置任意个数的Exit Do 语句,随时跳出Do...Loop 循
环。Exit Do 通常用于条件判断之后,例如If...Then,在这种情况下,Exit Do 语句将控制权 转移到紧接在Loop 命令之后的语句。如果Exit Do 使用在嵌套的Do...Loop 语句中,则Exit Do 会将控制权转移到Exit Do 所在位置的外层循环。
For...Next 语句
For…Next 语句可以以指定次数来重复执行一组语句。其语法如下: For counter = start To end [Step step] [statements] [Exit For] [statements] Next [counter]
For…next 语句的语法具有以下几个部分(表 2-11):
2. VBA 简介 36
Excel 与VBA 程序设计 Copyright ? 2005 马维峰
表 2-11 For Next 语句各部分说明
部分 描述
counter 必要参数。用做循环计数器的数值变量。这个变量不能是 Boolean 或数组元素。 start 必要参数。counter 的初值。 End 必要参数,counter 的终值。
Step 可选参数。counter 的步长。如果没有指定,则step 的缺省值为 1。
Statements 可选参数。放在For 和Next 之间的一条或多条语句,它们将被执行指定的次数。
step 参数可以是正数或负数。step 参数值决定循环的执行情况,如果step 为正数,则 当循环变量counter 小于等于结束变量End 时循环执行;如果step 为负数,则当counter 大 于等于结束变量End 时循环执行
循环中可以在任何位置放置任意个 Exit For 语句,随时退出循环。Exit For 经常在条件 判断之后使用,例如If...Then,并将控制权转移到紧接在Next 之后的语句。可以将一个 For...Next 循环放置在另一个For...Next 循环中,组成嵌套循环。不过在每个循环中的counter
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Excel与VBA程序设计(mini)(7)在线全文阅读。
相关推荐: