Class04. VBA - 决策与循环
1. 决策
1.1. if语句
语法如下。
if boolean_expression then
Statement 1
.....
.....
Statement n
end if
案例:
Sub if_demo_Click()
Dim x As Integer
Dim y As Integer
x = 234
y = 32
If x > y Then
MsgBox ("X 的值大于 Y 的值")
End If
End Sub
1.2. if … else 语句
一个if语句由一个布尔表达式和一个或多个语句组成。如果条件评估为True,则执行if条件下的语句。如果条件评估为False,则执行else部分块下的语句。
语法:
if boolean_expression then
Statement 1
.....
.....
Statement n
else
Statement ...
end if
案例:
判断一个成绩是否及格(60分及格)。
Sub scoreTest()
Dim v_score As Integer
v_score = InputBox("请输入你的成绩", "成绩")
If v_score >= 60 Then
MsgBox ("成绩为:" & v_score & ",成绩及格!")
Else
MsgBox ("成绩为:" & v_score & ",成绩不及格!")
End If
End Sub
1.3. if … elseif … else 语句
语法:
if boolean_expression then
Statement 1
.....
.....
Statement n
elseif boolean_expression then
...
else
Statement ...
end if
案例:
对分数进行分等级,大于等于90分为优秀;大于等于80分为良好;大于等于70分为中等;大于等于60分为合格;小于60分为不及格。
Sub scoreTest()
Dim v_score As Integer
v_score = InputBox("请输入你的成绩", "成绩")
If v_score >= 90 Then
MsgBox ("成绩为:" & v_score & ",成绩优秀!")
ElseIf v_score >= 80 Then
MsgBox ("成绩为:" & v_score & ",成绩良好!")
ElseIf v_score >= 70 Then
MsgBox ("成绩为:" & v_score & ",成绩中等!")
ElseIf v_score >= 60 Then
MsgBox ("成绩为:" & v_score & ",成绩合格!")
Else
MsgBox ("成绩为:" & v_score & ",成绩不及格!")
End If
End Sub
2. 循环
2.1. for 循环
案例:
计算 1+2+3+… + 100 的结果。
Sub sumTest()
Dim sum As Integer
sum = 0
' 从1循环到100
For i = 1 To 100
sum = sum + i
Next i
MsgBox ("1+2+3+...+99+100=" & sum)
End Sub
案例:
打印表格中的序号。
Sub test01()
Dim sum As Integer
sum = 10
' 从1循环到100
For i = 1 To sum
Cells(i, 1) = i
Next i
End Sub
2.2. 设置步长
案例:
计算 1+3+5… + 101 的结果。
Sub sumTest()
Dim sum As Integer
sum = 0
' 从1循环到101,步长为2
For i = 1 To 101 Step 2
sum = sum + i
Next i
MsgBox ("1+3+...+99+101=" & sum)
End Sub
案例:
计算 100+99+98+…+2+1 的结果。
Sub sumTest()
Dim sum As Integer
sum = 0
' 从1循环到101,步长为-1
For i = 100 To 1 Step -1
sum = sum + i
Next i
MsgBox ("100+99+...+2+1=" & sum)
End Sub
2.3. 嵌套循环
案例:
在单元格中打印出单元格的坐标。
Sub test004()
v_row_count = 9
v_col_count = 9
For i = 1 To v_row_count
For j = 1 To v_col_count
Cells(i, j) = i & "," & j
Next j
Next i
End Sub
案例:
在表格中打印出九九乘法表。
Sub test004()
v_row_count = 9
v_col_count = 9
For i = 1 To v_row_count
For j = 1 To i
Cells(i, j) = i & "*" & j & "=" & (i * j)
Next j
Next i
End Sub
2.4. 退出循环
退出循环可以使用 exit for
实现。
案例:
Sub test004()
v_row_count = 9
v_col_count = 9
For i = 1 To v_row_count
For j = 1 To v_col_count
Cells(i, j) = i & "*" & j & "=" & (i * j)
If j >= i Then
Exit For
End If
Next j
Next i
End Sub