VBA基礎02:VBA基本語句結構

選擇判斷

選擇判斷(If...Then)

Sub iftime()
    MsgBox Time
    If Time < 0.5 Then
        MsgBox " 早上好!"
    ElseIf Time > 0.75 Then
        MsgBox " 晚上好!"
    Else
        MsgBox " 下午好!"
    End If
End Sub

選擇判斷(Select...Case)

Sub dengji()
'   定義一個Variant型變量cj
    Dim cj As Variant
    cj = InputBox(" 輸入考試成績:")
'   Select語句開始
    Select Case cj
    Case 0 To 59
        MsgBox " 等級:D "
    Case 60 To 69
        MsgBox " 等級:C "
    Case 70 To 89
        MsgBox " 等級:B "
    Case 90 To 100
        MsgBox " 等級:A "
    Case Else
        MsgBox " 輸入錯誤!"
'   Select 語句結束
    End Select
End Sub

循環

循環(For...Next)

For   <循環變量>=<初值>To<終值>[Step 步長值]
      <循環體>
      [Exit For]
      [循環體]
Next [循環變量]
  • 步長是可選參數,若省略,默認步長爲1.
  • 可以在循環體中任意處加一句或多句 Exit For,當遇到這個語句,退出For 循環,執行Next後的語句。
  • Next 更改循環變量的值,執行下一個循環變量。變量名稱可以省略,直接寫成Next。

例:根據A列成績在B列更新其對應等級

Sub dengji()
    Dim xj As String, i As Integer
    For i = 2 To 50 Step 1
        Select Case Cells(i, "A")
            Case 0 To 59
                xj = " D "
            Case 60 To 69
                xj = " C "
            Case 70 To 89
                xj = " B "
            Case 90 To 100
                xj = " A "
            Case Else
                xj = " 輸入錯誤!"
        End Select
        Cells(i, "B") = xj
    Next i
End Sub

循環(Do...While)

Do   [While 邏輯表達式]
     <循環體>
     [Exit Do]
     [循環體]
Loop
  • 邏輯表達式 的值爲TRUE時,執行循環體,否則執行Loop後的語句,可省略,如果省略應在程序中使用Exit Do語句,讓程序滿足一定的條件後退出循環。
  • [Exit Do] 可選語句,執行Exit Do 語句後,將跳出循環,執行Loop後的語句。
  • Loop 標誌Do While 語句結束,返回Do 語句處,再次判斷循環條件。

例:根據A列成績在B列更新其對應等級

Sub dengji()
    Dim xj As String, i As Integer
    i = 2
    Do While Cells(i, "A") <> ""
        Select Case Cells(i, "A")
            Case 0 To 59
                xj = " D "
            Case 60 To 69
                xj = " C "
            Case 70 To 89
                xj = " B "
            Case 90 To 100
                xj = " A "
            Case Else
                xj = " 輸入錯誤!"
        End Select
        Cells(i, "B") = xj
    i = i + 1
    Loop
End Sub

也可以在結尾處判斷循環條件,語句爲:

Do
<循環體>
[Exit Do]
[循環體]
Loop [While 邏輯表達式]

注意: 這種循環格式在循環條件一開始就爲false的時候要多執行一次循環體
例:根據A列成績在B列更新其對應等級

Sub dengji()
    Dim xj As String, i As Integer
    i = 2
    Do
        Select Case Cells(i, "A")
            Case 0 To 59
                xj = " D "
            Case 60 To 69
                xj = " C "
            Case 70 To 89
                xj = " B "
            Case 90 To 100
                xj = " A "
            Case Else
                xj = " 輸入錯誤!"
        End Select
        Cells(i, "B") = xj
    i = i + 1
    Loop While Cells(i, "A") <> ""
End Sub

循環(Do...Until)

Do [Until 邏輯表達式]
      <循環體>
     [Exit Do]
     [循環體]
Loop

結尾判斷式

Do 
      <循環體>
     [Exit Do]
     [循環體]
Loop [Until 邏輯表達式]
  • 邏輯表達式 的值爲False時,執行循環體,否則退出循環。
    例:根據A列成績在B列更新其對應等級
Sub dengji()
    Dim xj As String, i As Integer
    i = 2
    Do
        Select Case Cells(i, "A")
            Case 0 To 59
                xj = " D "
            Case 60 To 69
                xj = " C "
            Case 70 To 89
                xj = " B "
            Case 90 To 100
                xj = " A "
            Case Else
                xj = " 輸入錯誤!"
        End Select
        Cells(i, "B") = xj
    i = i + 1
    Loop Until Cells(i, "A")  = ""
End Sub

循環(For Each...Next)

For Each 元素變量 In 集合名稱或數組名稱
    <語句塊1>
    [Exit For]
    [語句塊2]
next [元素變量]
  • 循環會默認遍歷 集合或數組所有的元素變量

例:獲取工作簿的各個工作表名

Sub shtname()
    Dim shtname()
        Dim sht As Worksheet, i As Integer
        i = 1
        For Each sht In Worksheets
            Cells(i, "D") = sht.Name
            i = i + 1
        Next sht
End Sub
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章