VBA实战(4) - 决策与循环

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
上一篇:寒假python培训笔记(六)


下一篇:动态归划之打家劫舍