一、If/Else语句
条件语句分为单行结构和块结构两种方式。
(1)单行结构
If condition Then statement [Else elsestatement]
(2)块结构
If condition Then
[statement]
ElseIf condition-n Then
[statement]
Else
[statement]
End If
单行结构适合用于简单的测试,块结构不仅具有更强的结构性,而且也易于维护调试。两者区别: 块结构的Then后面没有语句,而单行结构的肯定有语句。 单行结构没有End If结束语句,而块机构必须有该结束语句。
sngCj = InputBox("请输入学生的成绩:","输入成绩")
If sngCj >= 85 Then
MsgBox("成绩优秀")
ElseIf sngCj >= 60 And sngCj < 85 Then
MsgBox("成绩合格")
Else
MsgBox("成绩较差")
End If
小练习
一个按钮,点击后输入成绩,判断大于等于85分提示“成绩优秀”,大于等于60小于85提示“成绩合格”,其他小于60分提示“成绩较差”
二、IIf语句
IIF(condition, truepart, falsepart)
condition为条件。如果条件为真(True),则返回truepart表达式的值;反之返回falsepart表达式的值。以下表达式表示什么意思?
z = IIf(x < y, y , x)
三、Select语句
有时需要判定的条件较多,如果再用以上的条件结构,则代码显得十分繁琐且容易出错。为此,VB提供了专门用于多重判断的选着结构(也称为情况语句)
Select Case testExpression
Case expressionList-1
statementBlock-1
Case expressionList-2
statementBlock-2
...
Case Else
statementBlocak-n
End Select
testexpression为测试表达式,每个Case后的expressionList-1为表达式列表。VB再执行时首先计算表达式testexpression的值,然后将该值与每个Case后的值进行比较,若值相同就执行该Case后的语句块。如果有多个Case值与之相匹配,只执行第一个;如果没有一个匹配,则执行Case Else后的语句块。
测试表达式种类
- 具体取值,可以式一个或多个,如100,85,-1等。
- 连续的数据范围,如1 To 100、60 To 84等
- 利用Is关键字来判断,如对于成绩而言不可能大于100,因此85 To 100就可以写称Is >= 85,可以是其他的关系运算符。
- 以上几种表示方法的组合,如100,60 To 80,Is >= 85
sngCj = InputBox("请输入学生的成绩:","输入成绩")
Select Case sngCj
Case 85 To 100
MsgBox("成绩优秀")
Case 60 To 84
MsgBox("成绩合格")
Case Else
MsgBox("成绩较差")
End Select
小练习
请根据以下描述,编写财务部门征收劳务酬金所得税程序,规定如下:
(1)收入小于1000元,扣税3%。
(2)收入在1000 ~ 3000元(不含3000元),1000元以上部分扣税15%。
(3)收入在3000 ~ 5000元(不含5000元),3000元以内按(2)的方法扣税,3000元以上部分扣税20%。
(4)收入达到5000元以上(含5000元),扣税25%。
注意:扣税额输入框只能复制不能修改
运行结果:
输入 | 输出 |
---|---|
800 | 24 |
1500 | 105 |
3500 | 430 |
5000 | 1250 |
四、For/Next语句
Array函数
Dim 数组名称
数组名称 = Array(常量表达式列表)
利用Array函数对数组各值进行赋值,其类型只能是Variant。
Lbound函数和UBound函数
- Lbound函数:获取数组下界函数,默认情况下是0。
- Ubound函数:获取数组上界函数,和长度进行比较区分。
Option Base 1
在模块的最上面加上一句Option Base 1
下界变成了1。
For语句的结构
For counter = start To end [Step step]
statements
[Exit For]
statements
Next counter
该语句执行时,先将counter设为start(初值)。测试counter的值是否超过end(如step为正数是大于,否则是小于),若已经超过,则循环结束,否则执行循环体中的语句。step是每次循环时counter变化的值,它可以为负数,默认值为1.本次循环结束后,counter将加上步长step的值返回到循环开始再进行测试,知道counter的值超过终值,循环结束。再循环体内增加Exit For可以提前退出循环。
Dim i, j, intRs As Integer
Dim strMsg As String
Dim sngCj(), sngAver As Single '定义动态数组
intRs = InputBox("请输入学生数目:", "学生数") '输入学生的数目以决定数组的大小
ReDim sngCj(intRs + 1) '重新定义数组
sngAver = 0
For i = 1 To intRs
strMsg = "请输入第" & Str(i) & "个学生的成绩:"
sngCj(i) = InputBox(j, "成绩") '利用字符变量动态改变提示的内容
sngAver = sngAver + sngCj(i)
Next
sngAver = sngAver / intRs
Print "该门课平均成绩为:"; sngAver
小练习
定义一个班级数组,数组长度为10,点击按钮后用for语句随机产生大于等于100且小于等于200的数,用逗号分开输出在Label中。
五、While/Wend语句
While condition
statements
Wend
功能:按照条件是否成立执行循环。操作如下:
(1)测试条件
(2)当条件成立,执行语句序列,执行完语句序列,遇到Wend转向While语句,重新到(1)测试条件,当成立,进行下一次循环,如果不成立,转到Wend语句的下一句执行,结束循环。
小练习
设计一个程序,让计算机产生50~100的随机整数,请猜这个随机整数,并输出一共猜了几次。
要求:
- 循环弹框,如图所示;
- 判断输入的数字,判断并提示“数据太大”或者“数据太小”;
- 直到猜对为止,提示一共猜了多少次。
六、Do/Loop语句
1.当型循环
Do [While | Until 条件]
[语句组]
[Exit Do]
Loop
2.直到型循环
Do
[语句组]
[Exit Do]
Loop [While | Until 条件]
当型循环时先判断,后执行,循环体中的语句可能一次也不执行。而直到型循环时先执行后判断,循环体中的语句至少执行一次。两种语法均是通过关键字While和Until来控制循环执行的条件的,关键字While表示条件为真时循环执行,而Until则相反。 Exit Do语句执行时强制退出循环,这一句时可选的,它一般与判断结构的语句联合使用,以免造成死循环。
Do While True
sngCj = InputBox("请输入学生的成绩:", "输入成绩")
If sngCj = "" Then
Exit Do
Else
Select Case sngCj
Case 85 To 100
MsgBox ("成绩优秀")
Case 60 To 84
MsgBox ("成绩合格")
Case Else
MsgBox ("成绩较差")
End Select
End If
Loop
小练习
做一个和上一个练习一样的程序“猜数字”,要求使用Do/Loop语句。
思考
1.If/Else语句结构式怎么样
2.IIf语句结构式怎么样
3.For语句结构式怎么样
4.While语句结构式怎么样
5.Do/Loop语句结构式怎么样
练习
随机产生10个0~50的随机数,显示在Label上,然后分别用不同的循环语句找出最大值,最小值和总和。
- 用For语句找出最大值
- 用While语句找出最小值
- 用Do语句算出总和