Excel 如何修复VBA运行时错误1004或424

Excel 如何修复VBA运行时错误1004或424,excel,vba,Excel,Vba,我对编码相当陌生,这是我的第一个项目。我已经解决了所有其他问题,但现在我陷入了困境。我的代码应该将一张工作表上的条目与另一张工作表上的条目进行比较,并且在满足两个条件时,将数据从该行复制到另一张工作表中的相应行。准确复制数据的位置基于行中的年份 我曾尝试过使用VBA复制数据的各种不同方法,但最终总是出现两条相同的错误消息: 运行时错误424:如果使用 工作表(“模板”)。单元格(i,4)。值。复制 或运行时错误1004:使用时应用程序定义或对象定义的错误 工作表(“模板”)。范围(i,4)。复制

我对编码相当陌生,这是我的第一个项目。我已经解决了所有其他问题,但现在我陷入了困境。我的代码应该将一张工作表上的条目与另一张工作表上的条目进行比较,并且在满足两个条件时,将数据从该行复制到另一张工作表中的相应行。准确复制数据的位置基于行中的年份

我曾尝试过使用VBA复制数据的各种不同方法,但最终总是出现两条相同的错误消息:
运行时错误424:如果使用
工作表(“模板”)。单元格(i,4)。值。复制
运行时错误1004:使用时应用程序定义或对象定义的错误
工作表(“模板”)。范围(i,4)。复制

你可以在下面看到我的代码,我遗漏了一些东西,因为它与问题无关。此外,我只张贴我的前两个如果条件,因为其他5个是完全相同的

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
错误消息出现在注释“粘贴基于年份”下的第二行
提前非常感谢

我将在这里解释,以便其他用户也能看到:

问题在于使用了
Range
函数。通过使用单元格,我们可以指定从哪一行和哪一列拾取数据以及粘贴到哪里

Worksheets("Template").Cells(i, 4).Copy 
Worksheets("Data").Cells(j, 8).PasteSpecial xlPasteValues

Range
总是像
Range(“A1”)
Range(单元格(1,1)、单元格(1,1)
一样使用。这里没有使用。还有其他方法可以使用Range函数,但这两种是最常见的。

工作表(“模板”)。单元格(i,4)。复制工作表(“数据”)。单元格(j,8).PasteSpecial xlPasteValues
。您应该将该行更改为该行。我在过去的24小时内一直尝试让它运行,现在它可以工作了。非常感谢!是否可以解释一下,为什么它现在可以工作,或者我会问得太多?我在回答中已经解释过。@jamieor…如果它工作了,那么就接受答案。:)