第4章 选择结构 本章要点: 单分支IF语句 双分支IF语句 多分支IF语句 SELECT和CASE语句
选择结构能根据指定表达式的当前值在两条或多条程序路径中选择一条执行。它为处理多种复杂情况提供便利条件 VB中选择结构语句包含If语句和Select Case语句两种。其中If语句又分为单分支、双分支和多分支等结构,用户可根据需要进行选择。
4.1 单分支If语句 单分支结构If语句格式分为两种 1.多行结构格式为: If <表达式> Then <语句序列> End If 2.单行If语句格式为: If <表达式> Then <语句序列> 表达式 <语句序列> True False 图4.1 If…Then语句流程
例如: Private Sub Command1_Click() Dim a As Integer, b As Integer, t As Integer a = Val(Text1.text) b = Val(Text2.text) If a<b Then t = a a = b b = t End If Text1.text=a Text2.text=b End Sub 上述选择语句可用单行实现: If a<b Then t=a: a=b: b=t
4.2 双分支If语句 双分支结构If语句格式如下: If <表达式> Then <语句序列1> Else <语句序列2> End If 或写成单行If语句 If 表达式 Then语句序列1 Else语句序列2 表达式 语句序列 True False IF前面的语句序列 IF后面的语句序列
例如: Private Sub Form _ Click() Dim num1 As Integer, num2 As Integer, res As Integer num1=Val( InputBox (“请输入第一个数字”,“IF语句实例”)) num2= Val( InputBox (“请输入第二个数字”,“IF语句实例”)) If num2<>0 Then res=num1/num2 Print Str (num1)+”/”+Str (num2)+”=”+Str (res) Else MsgBox “第二个数字不能为零!”,0,“IF语句实例” End If End Sub
4.3 多分支If语句 多分支语句用于比较复杂的计算或数据处理过程,多分支结构条件语句实际上是单行结构条件语句的嵌套形式。多分支条件语句由于有起始语句和终端语句,程序的结构性强,所以也称为块结构条件语句。其格式为 If <表达式1> Then <语句序列1> [ElseIf <表达式2> Then <语句序列2>] … [ElseIf <表达式n> Then <语句序列n>] [Else 语句块n+1] End If 表达式1 语句序列n+1 表达式2 表达式n 语句序列2 语句序列1 IF后面语句 True False 语句序列n IF前面语句
例如: Private Sub Form _Click() Dim Number As Long Number = Val( InputBox (“请输入任意自然数”,“多行IF语句实例”,0)) : If Number<10 Then Print “输入的是一位数字" Else If Number<100 Then Print “输入的是两位数字" Else If Number<1000 Then Print “输入的是三位数字" Else Print “输入的是三位以上数字" End If End Sub
4.4 IIf函数 IIf函数可用来执行简单的条件判断操作,它与If…Then…else语句有类似的功能。其格式为 IIf( <条件>,<True部分>, <False部分>) 其中,“条件”是一个逻辑表达式。当“条件”为真时,IIf函数返回“True部分”,若“条件”为假,则返回“False部分”。这里“True部分”和“False部分”可以是表达式、变量或其它函数。
例如: Private Sub Command1 _ Click() Dim a As Integer, b As Integer, max As Integer a=Val( InputBox (“请输入a的值:”,“比较大小”)) b=Val( InputBox (“请输入b的值:”,“比较大小”)) max=IIf(a>b,a,b) Print “最大值为:”;max End Sub
4.5 Select Case语句 多分支选择结构语句用来处理较复杂的多条件选择判断。这种多分支选择结构语句也称为情况语句或Select Case语句(简称Case语句)。它实际上是块结构条件语句的一种变形。它与块结构条件语句的主要区别是,块结构条件语句可以对多个表达式的结果进行判断,从而执行不同的操作;而Case语句只能对一个表达式的结果进行判断,然后再进行不同的操作。
Select Case 语句的格式为 Select Case <测试表达式> Case <表达式列表1> <语句序列1> Case <表达式列表2> <语句块序列2> …… Case <表达式列表n> <语句块序列n> [Case Else 语句块序列n +1] End Select
Select Case语句中的“表达式结果表”可以有下列4中形式。 ( 1)表达式结果 只有一个数值常量或单个字符常量。 例如, Case 5 Case”ABC” (2) 表达式结果1[,表达式结果2]…[,表达式结果n] 在表达式结果表列有多个数值或字符串,多个取值之间用逗号隔开。如果表达式的值与其中一个数值或字符串相等,即可执行此表达式结果之后相应的语句序列;否则,若表达式的值与这些取值均不相等,可以再与随后的其他表达式结果表进行比较。 Case 1,3,5 Case “A”,”B”, “C”
(3) 表达式结果1To表达式结果2 称之为To表达式。它提供一个数值或字符串的取值范围,这里要求表达式结果1必须小于表达式结果2的值,字符串常量的范围必须按字母顺序写出。如果表达式的值与范围内的某个值相等,则执行此表达式结果之后的相应语句序列;否则,若表达式的值与这个取值范围内的值均不相等,可以再与随后的其他表达式结果表进行比较。 例如, Case 5 to 10 Case ”A” to “M” (4) 在一个Case子句中,几种表达式结果表的形式可以混用,混用时只需用逗号将其隔开。 Case Is<3,5,8,Is>20 Case Is<”M”,”S”TO”Z”
例如: Private Sub Form _Click() Dim num1 As Single, num2 As Single num1 = Val( InputBox (“请输入购物总金额”,“Case语句”)) : Select Case num1 Case Is >=5000 num2=num1*0.8 Case Is >=1000 num2=num1*0.85 Case Is >= 500 num2=num1*0.9 Case Is >=300 num2=num1*0.95 Case Else num2=num1 End Select Print”优惠价格为:”& Str(num2) End Sub
4.6 选择结构的嵌套 If语句的Then分支和Else分支,可以嵌套另一个If语句或Select Case语句。同样,在Select Case语句的Case子句中也可以嵌套另一个If语句或Select Case语句。具体的形式如下。 形式1 If<表达式1>Then If<表达式A>Then … Else … End If Else … End If
形式2 If<表达式1>Then Select Case<表达式A> Case … If<表达式a >then … Else … End If Case … … Else Case End Select End If
4.7 单选按钮控件 单选按钮控件使用时必须成组出现,在一组单选按钮中,用户只能选中其一,被选中的单选按钮中会出现黑点;如果用户不进行选择,系统会默认该组单选按钮中的一个按钮为被选中的项目。单选按钮控件主要用于在多个项目中选择其一的情况。它的默认名称(Name)和标题(Caption)为OptionX(X为编号,从1,2,…依次顺延)。 1.常用属性 2.常用事件
格式:对象.Value[=True/False] 1.常用属性 (1)Value属性 该属性可以通过属性窗口设置 格式:对象.Value[=True/False] 注意:单选按钮的Value属性与复选框控件Value属性不同之处,即Value属性值不再用数字表示。另外,当单选按钮的Value设为True时,相当于进行Click事件。 (2)Alignment属性 用于设定单选按钮标题的对齐方式 (3)Enabled属性 该属性用来表示单选按钮是否禁用 (4)Style属性 该属性用来设置单选按钮外观
4.8 复选按钮控件 CheckBox控件可以列出供用户选择的选项,用户可根据需要,用鼠标选定其中的一项或多项。被选中项左边的小方框中会出现一个”√”对勾,表示该项目被选中。它的默认名称(Name)和标题(Caption)为CheckX(X为编号,从1,2,…依次顺延)。 1.常用属性 2.常用事件
Value属性指示复选框处于未选定、选定和禁止状态(灰色的)中的哪一种状态 1.常用属性 (1)Value属性 Value属性指示复选框处于未选定、选定和禁止状态(灰色的)中的哪一种状态 格式:对象.Value[=常数/设置值] (2)Alignment属性 用于设定复选框标题的对齐方式
4.9 框架控件 框架控件是一个容器,它本身不具备可用于操作的功能,但我们可以利用框架来对其他控件进行分组,在窗体上建立自定义对话框,以方便用户识别。框架控件主要用于为单选按钮分组。它的默认名称(Name)和标题(Caption)为FrameX(X为编号,从1,2,…依次顺延)。 1.在框架内添加控件 2.常用属性 3.框架(Frame)控件的响应事件
在空窗体上设计,把指定的控件放到Frame控件中,必须先在窗体内添加Frame控件,然后再在Frame控件中画出需要成为一组的空间 1.在框架内添加控件 (1)在空窗体上 在空窗体上设计,把指定的控件放到Frame控件中,必须先在窗体内添加Frame控件,然后再在Frame控件中画出需要成为一组的空间 (2)窗体上已有控件 将已经存在窗体上的若干控件放在Frame控件中,首先在窗体内添加Frame控件,其次选择所有控件将它们剪贴到剪贴板上,最后选定框架控件并把它们粘贴到框架内
该属性用于标识框架上的标题名称,若Caption为空,则框架为封闭的矩形框 (2)Enabled属性 2.常用属性 (1)Caption属性 该属性用于标识框架上的标题名称,若Caption为空,则框架为封闭的矩形框 (2)Enabled属性 由于框架内所有控件和框架绑定在一起,当框架的Enabled属性为False时,程序运行时框架内部所有对象也都会随之失效,不能进行操作 (3)Visible属性 当框架的Visible属性为False,程序运行时,框架及内部控件会全部被隐藏起来,此时不能对框架内的控件进行操作
[ElseIf <表达式2> Then [ElseIf <表达式n> Then 本章小结 1.单分支IF语句 If <条件> Then [<语句组1>] 2. 双分支IF语句 If <条件> Then [<语句组1>] [Else <语句组2>] 3.多分支IF语句 If <表达式1> Then <语句序列1> [ElseIf <表达式2> Then <语句序列2>] … [ElseIf <表达式n> Then <语句序列n>] [Else 语句块n+1] End If