友情提示:本文共有 1268 个字,阅读大概需要 3 分钟。
For Each……Next在一个集合或数组中遍历循环一次,每循环一次都会把当前循环到的对象或元素赋值给变量。
遍历对象
例如:下面的例子会有B2到E11的区域,查找值大于等于90的单元格,如果找到则计数变量加1,并把其内容字符加粗,字体颜色改为红色
Sub find90()
Dim a As Integer, X As Range
a = 0
For Each X In Range("B2:E11")
If X.value >= 90 Then
a = a + 1
X.Font.Bold = True
X.Font.Color = RGB(255, 0, 0)
End If
Next
MsgBox "共有" & a & "个符合条件的数据,已为其设置了背景色以便区分"
End Sub
遍历数组
下面的代码定义一个26个元素的数组,数组下标是从0开始的,0-25个就是26个元素。然后在每个元素中循环一次,并且将大写字母A到Z的26个字母赋值给数组里的26个元素,并且把26个元素读取出来,连成一串字符在消息框中显示。这里是通过Chr转换函数将相应的数值转为对应的字母。
Sub AtoZ()
Dim a(25) As String, i As Integer, t As String
t = ""
For i = 0 To 25
a(i) = Chr(i + 65)
t = t & a(i)
Next
MsgBox t
End Sub
下面代码查找当前工作薄共有多少个工作表,其中已经使用的工作表有多少个
Sub countusedsheet()
ActiveSheet.usedrange.SpecialCells(11).Select
a = Sheets.Count "统计当前工作薄有几个工作表
For i = 1 To a
r = Sheets(1).usedrange.SpecialCells(11).Row
"已使用区域最后一行
c = Sheets(1).usedrange.SpecialCells(11).Column
"已使用区域最后一列
If r > 1 Or c > 1 Then
X = X + 1
End If
Next
MsgBox "当前工作薄共有" & a & "个工作表,其中" & X & "个工作表已使用"
End Sub
中途退出For Each......next循环
可以使用Exit For 或 goto 语句退出
例子:
Sub findN()
Dim X As Range,a as string
For Each X In Range("B2:E11")
If X.value = "李珊" Then
X.Font.Bold = True
X.Font.Color = RGB(255, 0, 0)
a=x.address(flass,flass)
MsgBox "已找到第一个符合条件的数据,它在" & a & "单元格" & chr(13) & "现在退出查找,后面符合条件的单元格D10也不会被找到。"
exit for
End If
Next
End Sub
本文如果对你有帮助,请点赞收藏《EXCEL之VBA-For Each……Next 语句的使用方法》,同时在此感谢原作者。