Vba 下一个循环未停止时的故障

Vba 下一个循环未停止时的故障,vba,excel,for-loop,infinite-loop,Vba,Excel,For Loop,Infinite Loop,我正在尝试将多张工作表中包含等待的列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

我正在尝试将多张工作表中包含等待的列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
尺寸c作为范围
作为整数的Dim j
将目标变暗为工作表
Set Target=ActiveWorkbook.Worksheets(“等待”)
j=1
对于工作表中的每个sh
如果是sh.name target.name,则
对于sh范围(“D1:D250”)中的每个c,执行1000行
如果c=“等待”,则
sh.Rows(c.Row).复制Target.Rows(j)
j=j+1
如果结束
下一个c
如果结束
下一个sh

您需要跳过
sh
如果
sh.name=target.name
.jsyk,
如果c=“waiting”,则
是区分大小写的比较。这就是为什么我将循环中的工作表名称与目标工作表名称进行比较,而不是将字符串“Waiting”进行比较。