计算机在执行程序时,通常情况下都是按照语句的书写顺序执行。但是在解决某些实际问题时,很多情况都需要根据给定的条件来选择所需执行的语句,即根据判断结果的不同而执行程序中不同部分的代码,这就是选择结构。
选择结构一般根据逻辑表达式的值来决定执行哪条语句,逻辑表达式的值为True时执行一种操作,为False时执行另一种操作。
在VBA中,选择结构分为If语句和Select Case语句。If语句又分为单分支、双分支和多分支语句。
1.单分支If语句
单分支If语句的格式:
If <条件> Then <语句块>
单分支If语句根据条件判断语句是否执行,若条件表达式的值为True,执行<语句块>;如果条件表达式的值为False,则执行If语句后的下一条语句。其结构如图8-9所示。
图8-9 单分支If语句结构
例8-13 比较x和y的大小,若y大于x,则进行x和y的交换。
如果y大于x,两数进行交换,否则不交换,即x存放较大的数。
2.双分支If语句
双分支If语句的格式如下:
双分支If语句同样也根据条件进行判定,若条件表达式的值为True,则先执行<语句块1>,<语句块1>可包含N条语句,然后执行End If后的语句;如果条件表达式的值为False,则执行Else语句后的<语句块2>,最后执行End If后的语句。其结构如图8-10所示。
例8-14 判断输入数据的奇偶性,窗体设计界面如图8-11所示,保存窗体为“例8-14判断数据的奇偶性”,运行窗体结果如图8-12和图8-13所示。
图8-10 双分支If语句结构
图8-11 判断数据的奇偶性
图8-12 奇数界面
图8-13 偶数界面
窗体中“判断”按钮的鼠标单击事件代码设计如下:
根据输入的数据判断,如输入369,369除以2取余,余数为1,不满足余数为0,表达式为False,执行Else后的语句,“该数是奇数”。
3.多分支if语句(www.xing528.com)
在实际应用中,经常要对多个条件进行判定,并做出不同的处理,这样的程序语句称为“多分支语句”。多分支If语句的格式如图8-14所示。
图8-14 多分支结构
多分支语句执行时,若满足<条件1>时,则执行<语句块1>,然后执行End If后的语句;否则再判断<条件2>,是否为真时,则执行<语句块2>,以此类推,一直执行到当所有条件都不满足时,则执行语句块Else后的<语句块n+1>。在程序执行的过程中,有且仅有一个分支的语句块被执行。
例8-15 在成绩等级窗体中输入学生的分数(百分制),根据百分制成绩输出成绩的五分制等级,窗体界面如图8-15所示,保存为“例8-15分制转换”。其中90~100分为A等级,80~89分为B等级,70~79分为C等级,60~69分为D等级,60分以下为E等级。成绩转换窗体如图8-16所示,出错信息如图8-17所示。
图8-15 分制转换界面
图8-16 输入百分制换算成五分制
图8-17 成绩出错信息
“确定”按钮代码如下:
思考:当输入下一个分数,文本框中清空,并给“清除”按钮加载事件。
4.多分支Select Case语句
使用Select Case语句的目的就是解决在条件复杂、分支太多时使用多个If语句烦琐问题,从而实现程序的简洁性与易读性。它可根据表达式的求值结果自主选择几个分支中对应的一个执行。其结构如图8-18所示。
图8-18 Select Case语句结构
如图8-18所示,在Select Case语句中,可先计算变量或表达式的值,再依次计算Case子句中表达式的值,如果变量或表达式的值和某个Case表达式的值相吻合,则执行相应的语句序列,然后执行End Select下面的语句;若表达式的值都不符合条件,有Case Else部分的,就执行语句序列n+1,否则执行End Select后面的语句。
例8-16 将例8-15用Select Case语句表示。
5.条件函数IIf
IIf函数的格式如下:
IIf(<条件表达式>,<表达式1>,<表达式2>)
该函数首先要计算“条件表达式”的值,根据“条件表达式”的值来决定函数返回值,当“条件表达式”的值为“True”时,IIf函数返回<表达式1>的值;否则,函数返回<表达式2>的值。
例8-17 求x,y中最大值,并把值大的量存入MaxNum变量中。语句如下:
MaxNum=IIf(x>y,x,y)
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。