for each循环语句
- for each.....next
- For Each 的案例
for each…next
1、循环对象合集
worksheets
workbooks
range range("区域")selection (选中的区域)usedrange或者currentregion 返回的单元格区域格式:
for each 变量名 in 对象集合(范围)循环内容
next
循环工作簿例子:
Sub t()
Dim s As Workbook //用s代表工作簿数据类型For Each s In Workbooks //循环工作簿的集合用s代表MsgBox s.Name// s在工作簿中循环Next
End Sub //打开多少个就循环多少个
In Workbooks、in worksheets都可以替换,in后面是一个自定义范围循环工作表例子 :
Sub t1()
Dim s As Worksheet //用s代表工作表数据类型(申明成一个工作表)For Each s In Worksheets //循环工作表的集合用s代表MsgBox s.Name// s在工作表中循环Next
End Sub s就是Worksheet的代号
s.name==Worksheet.name
在工作表(簿)中循环,有多少个就循环多少个
把工作表的名称依次修改为123456
Sub t1()
Dim s As Worksheet //这个区域的表格元素For Each s In Worksheets//In Worksheets代表范围n = n + 1 n从0次(空)开始s.Name = n s.Name = n=1赋予当前循环到的工作表Next
End SubSub r()
Dim a As Range
For Each a In Range("A1:E11") (方位写死)MsgBox a
Next
End SubSelection:是我自主在表中框选的
动态选框(大范围或者小范围循环)
Sub r()
Dim a As Range
For Each a In SelectionMsgBox a
Next
End Sub替换:For Each a In sheet("2").usedrange //动态获取数据区域
For Each a In sheet("2").[单元格]currentrange
n = n + 1
s.Name = n
n=0时,把0+1赋予了n,n=1,把1带入s.name=1,所以worksheet.name=1,有多少就循环多少
For Each 的案例
1、
Sub te()
Dim bg As Range
For Each bg In Range("c2", Cells(Rows.Count, 3).End(xlUp))If bg.Value < 60 Thenbg.Interior.ColorIndex = 3End If
Next
End Sub
其中:如何得出
Range("c2", Cells(Rows.Count, 3).End(xlUp))
由以下的演变过来:(都表示范围)
Range("c2", "C21").Select
Range("c2", Cells(21, 3)).Select
Range("c2", Cells(1048576, 3).End(xlUp)).Select
Range("c2", Cells(Rows.Count, 3).End(xlUp)).Select
2、从B2单元格向下循环到最尾端,循环出来的事“男”,就兴建对应名字的工作表
过程:
//前提:不可出现同名
Dim nan As Range, n%
For Each nan In Range(Sheet1.[b2], Sheet1.Cells(Rows.Count, 2).End(xlUp))n = n + 1 '累计数 (n被赋值编程1)If nan.Value = "男" Then'就新建并修改对应名字(命名)的工作表Worksheets.Add.Name = Sheet1.Cells(n + 1, 1) (1进来变成2)'命名循环出来的单元格左边的单元格End If
Next nan
End Sub
可以优化(新增放在sheet1工作表的后面)
Worksheets.Add.Name = Sheet1.Cells(n + 1, 1)
# 加上(after:=sheets(sheets.Count))进行统计后凡在后面
Worksheets.Add(after:=sheets(sheets.Count)).Name = Sheet1.Cells(n + 1, 1)