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)