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 Sub


Sub r()
Dim a As Range
For Each a In Range("A1:E11")  (方位写死)
    MsgBox a
Next
End Sub


Selection:是我自主在表中框选的
动态选框(大范围或者小范围循环)
Sub r()
Dim a As Range
For Each a In Selection
    MsgBox 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 Then
    bg.Interior.ColorIndex = 3
  End 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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值