我正在尝试获取多张工作表上的所有行,其中 D 列中的单元格包含复制到名为等待的工作表中的单元格。这是代码。循环运行太远,导致重复粘贴。
我认为j = j + 1
导致了它,但我不知道如何纠正它。
Sub Waiting()
' unfilter entire workbook
Dim sh As Worksheet
For Each sh In Worksheets
sh.AutoFilterMode = False
Next sh
' copy rows to waiting sheet
Dim c As Range
Dim j As Integer
Dim Target As Worksheet
Set Target = ActiveWorkbook.Worksheets("Waiting")
j = 1
For Each sh In Worksheets
For Each c In sh.Range("D1:D250") ' Do 1000 rows
If c = "waiting" Then
sh.Rows(c.Row).Copy Target.Rows(j)
j = j + 1
End If
Next c
Next sh
' j=j+1 is causing infinite loop
End Sub
如果
sh.name = target.name
,您需要跳过sh
。
Dim c As Range
Dim j As Integer
Dim Target As Worksheet
Set Target = ActiveWorkbook.Worksheets("Waiting")
j = 1
For Each sh In Worksheets
if sh.name <> target.name then
For Each c In sh.Range("D1:D250") ' Do 1000 rows
If c = "waiting" Then
sh.Rows(c.Row).Copy Target.Rows(j)
j = j + 1
End If
Next c
end if
Next sh