一、foreach語法
For Each...Next 語句對數組或集合中的每個元素重復執行一組語句。
For Each element In group
[statements]
[Exit For]
[statements]
Next [element]
參數介紹:
element 用來枚舉集合或數組中所有元素的變量。對於集合,element 可能是 Variant 變量、通用 Object 變量或任意指定的 Automation 對象變量。對於數組,element 只能是 Variant 變量。
group 對象集合或數組的名稱。
statements 對於 group 中的每一項執行的一條或多條語句。 說明如果 group 中有至少一個元素,就會進入 For Each 塊執行。一旦進入循環,便首先對 group 中第一個元素執行循環中的所有語句。只要 group 中還有其他的元素,就會對每個元素執行循環中的語句。當 group 中的沒有其他元素時退出循環,然後從 Next 語句之後的語句繼續執行。
Exit For 只能用於 For Each...Next 或 For...Next 控制結構中,提供另一種退出循環的方法。可在循環的任意位置放置任意個 Exit For 語句。Exit For 經常和條件判斷語句一起使用(例如 If...Then),並立即將控制權轉移到 Next 之後的語句。
可以將一個 For Each...Next 循環放置在另一個之中,組成嵌套式 For Each...Next 循環。但是每個循環的 element 必須是唯一的。注意 如果省略 Next 語句中的 element,則程序仍會象已包含它一樣繼續執行。如果 Next 語句在其相應的 For 語句之前出現,則會產生錯誤。
二、foreach例子
Dim Myarr(3) As Integer
Myarr(0) =3
Myarr(1) = 4
Myarr(2) = 5
Myarr(3) = 6
ForEach i In Myarr
MsgBox i
Next i
注意,在使用ForEach時,不必給數組標明其下標為多少。
Dim rng As Range, Arr, sums&
sums = 0
ForEach rng In Range("B1:B100")
sums = sums + rng.Row
Next
MsgBox sums
再來看具體的例子
Set myTotal = myRange.Offset(myRange.Rows.Count - 1).Rows
For Each myCell In myTotal
If IsNumeric(myCell.Value) = False Then
myCell.Value = "Total"
endif
Next myCell