工作表(n)。范围…返回运行时错误1004

VBA运行时错误1004“应用程序定义或对象定义的错误”

当我运行这个代码时被返回。 我search谷歌/堆栈溢出,他们都告诉我指定的范围,但有趣的是,错误发生后,我指定的范围。 (在修改之前,它确实工作,但返回了错误的结果)

Worksheets(2).Range(Cells(finderA.Row, rng2.Column), Cells(finderA.Row, rng2.Columns.Count + rng2.Column - 1)).Copy finalWS.Cells(rowCounter, rng1.Columns.Count + 2)

– >这是返回错误的行。

整个代码是我们通过比较具体的共同价值来检查两个数据之间的遗漏的冗长的一部分。

我在这个代码中基本上要做的就是循环遍历另一个区域,并按顺序复制粘贴匹配的行(即,我将表单3从表单1,2中删除)。

 Dim rowCounter As Integer rowCounter = 1 Dim eachCellA As Range, eachCellB As Range Dim eachCellAa As Range, eachCellBb As Range Dim StrFirstAdd As String, StrAdd As String Dim finderA As Range, finderB As Range For Each eachCellA In addCellRngA With addCellRngB Set finderA = .Find(eachCellA.Value, LookIn:=xlValues, Lookat:=xlWhole) End With If Not finderA Is Nothing Then eachCellA.EntireRow.Copy finalWS.Cells(rowCounter, 1) StrFirstAdd = finderA.Address StrAdd = finderA.Address Do Worksheets(2).Range(Cells(finderA.Row, rng2.Column), Cells(finderA.Row, rng2.Columns.Count + rng2.Column - 1)).Copy finalWS.Cells(rowCounter, rng1.Columns.Count + 2) **##--> Debugger stops here, returns error.** Set finderA = addCellRngB.FindNext(finderA) StrAdd = finderA.Address rowCounter = rowCounter + 1 Loop While Not finderA Is Nothing And StrAdd <> StrFirstAdd Else eachCellA.EntireRow.Copy finalWS.Cells(rowCounter, 1) rowCounter = rowCounter + 1 End If Next 

这是代码,所有的值(finderA.Row,rng2.Column,rng2.Columns.count等)不是空的,并有正确的值。

我以为粘贴整个行是不必要的,但如果你觉得原因不在代码内,让我知道我会很乐意提供整个代码。

更换

 Worksheets(2).Range(Cells(finderA.Row, rng2.Column), Cells(finderA.Row, rng2.Columns.Count + rng2.Column - 1)).Copy finalWS.Cells(rowCounter, rng1.Columns.Count + 2) 

 With Worksheets(2) .Range(.Cells(finderA.Row, rng2.Column), .Cells(finderA.Row, rng2.Columns.Count + rng2.Column - 1)).Copy finalWS.Cells(rowCounter, rng1.Columns.Count + 2) ' **##--> Debugger stops here, returns error.** End With 

您必须限定所有范围参考,包括单元格,否则后者可能是指不同的工作表(在运行代码时处于活动状态)。

在这两种情况下,你也可以从If中删除这一行

 eachCellA.EntireRow.Copy finalWS.Cells(rowCounter, 1) 

并改变你的循环条件

 Loop While StrAdd <> StrFirstAdd