For...Next 中間包含要處理的程式。
在中間的程式會隨著初期值,最終值,增加值的設定。
重複處理的次數也會不同。
一剛開始學習程式的時候,VBA經常漏掉Next,導致錯誤發生。
在使用For迴圈的時候,結尾別忘記Next喔。
最後漏掉Next的時候會顯示編譯錯誤
For迴圈也經常使用在條件判斷中,如果為True或False就進行重複處理。
迴圈處理是非常重要的部分,多練習多看範例,慢慢就能了解該怎麼使用。
雖然VBA中For迴圈的寫法與其他程式不同,
但其實是差不多的喔。
以下就讓我們來試著在VBA中,使用For迴圈進行重複處理吧。
基本格式
以下為For迴圈的基本格式,
初期值可以是數字也可以是儲存格參照的值,但必須為數字。
最終值可以是數字也可以是儲存格參照的值,但必須為數字。
初期值可以大於或小於最終值,也就是遞增和遞減重複處理的情況。
Point!
For 變數 = 初期值 To 最終值 step 增加值
重複處理
Next [ 變數 ]
↑ Next後方變數可寫可不寫, 但Next一定要寫
範例
基本格式
' For 變數 = 初期值 To 最終值 step 增加值
' 重複處理
' Next [ 變數 ]
'最後的Next 可省略後方的變數
' 宣告變數
Dim i%
Dim result%: result = 0
'For 迴圈處理
For i = 1 To 5
result = result + i
Next
'顯示result最終值
MsgBox result
關於For迴圈可參考以下連結影片
For 迴圈 + 增加值 (遞增情況)
最終值>初期值,增加值為正的時候以下範例計算的結果為
1 + 3 + 5 + 7+ 9 = 25
範例
' 宣告變數
Dim i%
Dim result%: result = 0
'For 迴圈處理 , 增加值為 2
For i = 1 To 10 Step 2
result = result + i
Next
'顯示result最終值
MsgBox result
關於For迴圈 + 增加值 遞增情況可參考以下連結影片
For 迴圈 + 增加值 (遞減情況)
最終值>初期值,增加值為正的時候以下範例計算的結果為
10 + 8 + 6 +4 + 2 = 30
範例
' 宣告變數
Dim i%
Dim result%: result = 0
'For 迴圈處理 , 增加值為 -2
For i = 10 To 1 Step -2
result = result + i
Next
'顯示result最終值
MsgBox result
For Each...Next 重複處理
如果想要針對相同種類物件的全部元素,
例如儲存格範圍,工作表,活頁簿等作相同處理,
可以使用For Each ~Next 的陳述式
在這裡要注意的是,這邊是針對相同種類物件
不是單一的儲存格,指的是範圍,集合內的全部元素。
在使用上時要特別注意這個部分。
For Each 陳述式可以依序從指定的集合中取出集合裡的成員,再進行處理。
基本格式
Point!
For Each 元素 In 集合名
要跑迴圈重複處理的部分
Next
範例
Sub ForEach處理()
' 針對集合內的全部元素做重複處理
' 儲存格,工作表,活頁簿
' 基本格式
' For Each 元素 In 集合名
' 重複處理
' Next
' 宣告變數
Dim myRange As Range
Dim result As Variant
' 假設A1~C2儲存格的數值為2
Range("A1:C2").Value = 2
' For Each 重複處理
For Each myRange In Range("A1:C2")
result = result + myRange.Value
Next
' 顯示 result 最終值 A1:C2的集合
MsgBox result
End Sub
執行後的結果如下
關於For Each…Next 重複處理可參考以下連結影片