我对编码还很陌生,这是我的第一个项目。我已经摆脱了所有其他问题,但现在我陷入了困境。我的代码应该将一张纸上的条目与另一张纸上的条目进行比较,并在满足两个条件时将数据从该行复制到另一张纸上的相应行。准确复制数据的位置基于行中的年份。
我尝试了使用VBA复制数据的各种不同方式,但最终总是出现相同的两条错误消息:
Runtime error 424: Object required
(如果我使用)
Worksheets("Template").Cells(i, 4).Value.Copy
或Runtime error 1004: application-defined or object-defined
错误,当我使用
Worksheets("Template").Range(i, 4).Copy
您可以在下面看到我的代码,我已经省略了一些内容,因为它与问题无关。另外,我只发布前两个条件,因为其他五个条件完全相同。
Sub Datentransfer()
Dim newEmptyRow As Long
newEmptyRow = Worksheets("Data").Cells(Rows.Count,2).End(xlUp).Offset(1,
0).Row
Dim entries As Integer
entries = Worksheets("Template").Cells(Rows.Count, 1).End(xlUp).Row
'Variables for runing through the two sheets
Dim i As Integer, j As Integer
For i = 3 To entries 'Start in Zeile 3
For j = 24 To newEmptyRow 'Start in Zeile 24
'Copy if both conditions are met
If Worksheets("Template").Cells(i, 3).Value = Worksheets("Data").Cells(j, 2).Value _
And Worksheets("Template").Cells(i, 1).Value = Worksheets("Data").Cells(j, 5).Value Then
'Paste based on year
If Worksheets("Template").Cells(i, 2).Value = 2011 Then
Worksheets("Template").Range(i, 4).Copy
Worksheets("Data").Range(j, 8).PasteSpecial xlPasteValues
ElseIf Worksheets("Template").Cells(i, 2).Value = 2012 Then
Worksheets("Template").Range(i, 4).Copy _
Worksheets("Data").Range(j, 9)
End If
End If
Next j
Next i
End Sub
该错误消息出现在注释“基于年份的粘贴”下方的第二行中。 提前非常感谢您!
答案 0 :(得分:1)
我将在这里解释,以便其他用户也可以看到它:
问题出在使用Range
函数。通过使用单元格,我们可以指定从中选择数据的行和列以及粘贴位置。
Worksheets("Template").Cells(i, 4).Copy
Worksheets("Data").Cells(j, 8).PasteSpecial xlPasteValues
Range
总是像Range("A1")
或Range(Cells(1,1),Cells(1,1)
那样使用。这里没有做。还有其他使用Range函数的方法,但这两种是最常见的方法。