VBA筆記

變數 判斷式 迴圈

Alex
4 min readMar 10, 2021

宣告與初始化變數

Excel VBA 中的變數宣告是使用 DimAs 兩個關鍵字,分別指定變數名稱以及變數的類型,例如宣告一個整數類型的變數 x

Dim x As Integer

萬用類型變數

一種可以儲存任何資料的類型,其稱為 Variant

常數

把這種固定的變數加上 Const,宣告為常數

算術運算子

運算子 說明 優先順序

Dim a, b As Integer, c As Double
a = 5
b = 10

c = a + b ' 加法
c = a - b ' 減法
c = a * b ' 乘法
c = b / a ' 除法
c = b Mod a ' 餘數
c = b ^ a ' 次方

字串運算

&串接兩個字串

If ThenElse

Dim rainProb As Double
rainProb = 0.3 ' 降雨機率
If rainProb > 0.7 Then
MsgBox "帶雨傘出門"
ElseIf rainProb > 0.3 Then
MsgBox "丟銅板決定要不要帶雨傘"
Else
MsgBox "不用帶雨傘出門"
End If

Select Case

就是switch概念

If版本

Dim x As Integer
x = 7
If x <= 5 Then
MsgBox "Case 1"
ElseIf x = 6 Or x = 8 Then
MsgBox "Case 2"
ElseIf x = 7 Or x = 9 Then
MsgBox "Case 3"
ElseIf x = 10 Then
MsgBox "Case 4"
Else
MsgBox "Case 5"
End If

select case版本

Dim x As Integer
x = 7
Select Case x
Case Is <= 5
MsgBox "Case 1"
Case 6, 8
MsgBox "Case 2"
Case 7, 9
MsgBox "Case 3"
Case 10
MsgBox "Case 4"
Case Else
MsgBox "Case 5"
End Select

兩段程式碼效果一樣

迴圈

VBA 中的迴圈主要可分為 For LoopFor EachDo Loop 這幾種

For Loop

For Loop 迴圈主要用於已知重複次數的問題,也就是在執行迴圈之前,就已經事先知道要執行幾次

For 迭代變數 = 開始值 To 結束值
運算內容
Next 迭代變數

計算從 110 總和的範例:

Dim i, s As Integer
s = 0
For i = 1 To 10
s = s + i
Next i
MsgBox "s = " & s

Exit For 中斷迴圈

如果想要中途跳出迴圈,可以加上 Exit For 來中斷迴圈:

Dim i, s As Integer
s = 0
For i = 1 To 10
s = s + i
If i >= 4 Then
Exit For ' 中斷迴圈
End If
Next i
MsgBox "s = " & s

For Each

For EachFor Loop的另外一種精簡寫法,兩者功能差不多

一般若要使用 For Loop 迴圈對陣列中的每個元素逐一處理時,必須明確指定開始與結束的索引值,再以索引值取出陣列中的元素做進一步的運算,而 For Each 則是可以自動將陣列中的元素逐一取出,放進迴圈的迭代變數中處理,這樣的寫法會比 For Loop 更精簡

使用 For Each 迴圈找出目前 Excel 中所有工作表的範例程式:

Dim wSheet As Worksheet
For Each wSheet In Worksheets
MsgBox "找到工作表: " & wSheet.Name
Next wSheet

Do Loop

Do Loop 可以重複執行某一段程式碼,直到指定的條件判斷式成立或是不成立的時候,才停止迴圈的執行,有好幾種不同的型式

Do While Loop

在每一次運行時,檢查一個指定的條件判斷式,如果成立的話(判斷為 True)就會繼續執行,而如果條件不成立(判斷為 False)的話,就會中止迴圈

Do While 條件判斷式
運算內容
Loop

計算 110 總和:

Dim i, s As Integer
s = 0
i = 1
Do While i <= 10
s = s + i
i = i + 1
Loop
MsgBox "s = " & s

While的條件判斷式也可以放在迴圈結尾處,這樣的話迴圈在執行時就會先執行第一次的迭代,執行完第一次之後才判斷是否要繼續執行下一次的迭代

Do
運算內容
Loop While 條件判斷式

Do Until Loop

Do Until Loop 迴圈與 Do While Loop 迴圈在條件的判斷上剛好相反,Do Until Loop 迴圈會在指定條件不成立(判斷為 False)時繼續執行,當判斷條件成立時(判斷為 True)則終止迴圈。

Exit Do 中斷迴圈

如果要在 Do Loop 迴圈執行到一半時終止迴圈的執行,可以在迴圈中加入 Exit Do,以下是一個範例:

Dim i, s As Integer
s = 0
i = 1
Do Until i > 10
s = s + i
i = i + 1
If i > 4 Then
Exit Do ' 中斷迴圈
End If
Loop
MsgBox "s = " & s

--

--

Alex
Alex

Written by Alex

隨手紀錄學習筆記,方便自己回顧

No responses yet