在對象中循環——For Each-Next結構的使用
在對象中循環——For Each-Next結構的使用

為方便操控Excel對象,VBA提供了For Each-Next結構,可以在對象組成的集合中循環,給集合中的所有對象執行操作,或者集合中滿足相關條件的對象執行操作。
For Each-Next結構的語法如下:
For Each 對象變量In 對象集合
[語句塊]
[Exit For]
[語句塊]
Next [對象變量]
說明:
按照慣例,方括號中的內容表示可選項。
Exit For語句表示提前退出循環。
無需知道集合中的對象數目。
可以與其它語法結構相互嵌套。
下面通過示例來演示For Each-Next結構的使用。
示例1:下面的代碼遍歷當前工作簿中的工作表并依次顯示工作表的名字。
Sub ForEach1()
‘遍歷工作表集合并依次顯示工作表的名字
For Each wks In Worksheets
MsgBox “工作表的名字是:”& wks.Name
Next wks
End Sub
示例2:通過改進上面的示例1,在顯示工作表名字時表明是第幾個工作表,最后統計出工作簿中的工作表數,代碼如下。
Sub ForEach2()
i = 0 ‘給變量賦初始值
For Each wks In Worksheets
i = i + 1
MsgBox “第” &i & “個工作表的名字是:” & wks.Name
Next wks
MsgBox “本工作簿共有” & i& “個工作表.”
End Sub
示例3:下面的代碼遍歷當前工作表的單元格區域A1:A5,并依次顯示每個單元格中的內容。
Sub ForEach3()
‘遍歷單元格區域A1:A5并依次顯示單元格內容
For Each cell In Range(“A1:A5”)
MsgBox cell.Value
Next cell
End Sub
示例4:下面的代碼與示例3的效果相同,但我們設置了代表單元格區域的對象變量并賦值,讓For Each結構在對象變量代表的區域內循環遍歷。
Sub ForEach4()
‘設置rng變量的值
Set rng = Range(“A1:A5”)
‘遍歷rng對象變量代表的單元格區域并依次顯示單元格內容
For Each cell In rng
MsgBox cell.Value
Next cell
End Sub
示例5:下面的代碼結合If-Then結構判斷滿足相應條件的單元格數。
如下圖所示,要統計成績大于80分的學生人數。
運行下面的代碼即可。
Sub ForEach5()
‘設置rng變量的值
Set rng = Range(“B2:B9”)
i = 0
‘遍歷rng對象變量代表的單元格區域
‘并判斷單元格中的值是否大于80
For Each cell In rng
If cell.Value > 80 Then
i = i + 1
End If
Next cell
MsgBox “共有” & i& “名學生超過80分.”
End Sub
代碼在For Each循環結構中使用If-Then語句來檢查每個單元格中的值,如果其值大于80,變量i就增加1。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。