For 迴圈介紹



目錄

{tocify} $title={目錄}

For迴圈重複處理

VBA和其他程式語言一樣,也有For迴圈可以進行重複處理。
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 重複處理可參考以下連結影片






張貼留言 (0)
較新的 較舊