【发布时间】:2017-10-19 21:44:13
【问题描述】:
VBA 运行时错误 1004“应用程序定义或对象定义错误”
在我运行此代码时返回。我搜索了 Google / Stack Overflow,他们都告诉我指定范围,但有趣的是错误发生在我指定范围之后。 (修改前确实有效但返回错误结果)
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)
--> 这是返回错误的行。
整个代码是我通过比较特定的共同值来检查两个数据之间的遗漏的长行的一部分。
我在这段代码中基本上试图做的是将一个范围循环到另一个范围并按顺序复制粘贴匹配的行(即,我正在从工作表 1,2 中制作工作表 3。)
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 等)都不是空的并且具有正确的值。
我认为粘贴整行是不必要的,但如果您觉得原因不在代码中,请告诉我,我非常乐意提供整个代码。
【问题讨论】: