Excel 复制动态范围时对象工作表的方法范围失败

Excel 复制动态范围时对象工作表的方法范围失败,excel,vba,Excel,Vba,我有一个遍历一系列单元格的循环,如果满足一个条件,我将相关数据复制到一张工作表上,如果不满足,则复制到另一张工作表上。 我在动态使用范围进行复制时遇到问题 我试图以两种不同的方式引用范围,但得到了相同的错误 For i = 2 To lastRow Set found= WC.Range("O1:O" & LastInList).Find(SL.Range("G" & i)) If Not (found Is Nothing) SL.Rang

我有一个遍历一系列单元格的循环,如果满足一个条件,我将相关数据复制到一张工作表上,如果不满足,则复制到另一张工作表上。 我在动态使用范围进行复制时遇到问题

我试图以两种不同的方式引用范围,但得到了相同的错误

For i = 2 To lastRow
     Set found= WC.Range("O1:O" & LastInList).Find(SL.Range("G" & i))

    If Not (found Is Nothing) 
        SL.Range(Cells(i, 1), Cells(i, 3)).Copy Destination:=WC.Range("A" & WCEmptyRow) 'ERROR here
    Else
        'do something
    End If
Next i
还尝试:

SL.Range("A" & i, "C" & i).Copy Destination:=WC.Range("A" & WCEmptyRow) ' ERROR here

我应该如何引用第一行中的单元格以复制它们?

什么是
foundAH
?它不在代码中。如果没有(foundAH什么都不是),请确保检查是针对
。为了避免未声明的变量,请遵循注释中@PEH的
选项Explicit
-在VBA编辑器中转到工具›选项›需要变量声明

此外,该代码也适用于。参见修订代码中的点:

For i = 2 To lastRow
    Set found= WC.Range("O1:O" & LastInList).Find(SL.Range("G" & i))

    If Not (found Is Nothing) 
        With SL
            .Range(.Cells(i, 1), .Cells(i, 3)).Copy Destination:=WC.Range("A" & WCEmptyRow)
        End With
    Else
        'do something
    End If
Next i

你测试
foundAH
,除了你
设置found
。我强烈建议始终激活
Option Explicit
,以避免此类打字错误:在VBA编辑器中,转到工具›选项›。•同时为
单元格(i,1)
指定一个工作表,否则它可能与
SL.Range
不在同一工作表中如果你有错误,总是告诉我们在哪一行,否则我们不得不猜测还要确保
WCEmptyRow
LastInList
>0
@Pᴇʜ谢谢,我有明确的选择,上面是一个打字错误(我修正了它)。我按照你的建议把这张表加上去了。我仍然收到错误。您需要在这里修复它。
SL.Range(单元格(I,1),单元格(I,3))。复制
,使其成为
SL.Range(SL.Cells(I,1),SL.Cells(I,3))。复制
请检查并告知
WCEmptyRow
LastInList
的值。例如,使用
Debug.Print WCEmptyRow,LastInList将其输出到即时窗口中。我打赌
WCEmptyRow
不是
>0
或最后一行
1048576
@Pᴇ谢谢!问题确实是WCEmptyRow(它不是负数,它太大了,我数错了,然后在最后一行加上1)。再次感谢。