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

杰米耶尔

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

我尝试了使用VBA复制数据的各种不同方式,但始终会遇到相同的两条错误消息:Runtime error 424: Object required如果使用Worksheets("Template").Cells(i, 4).Value.CopyRuntime 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

错误消息出现在注释“基于年份粘贴”下方的第二行中。提前非常感谢您!

美久

我将在这里说明,以便其他用户也可以看到:

问题在于Range功能的使用通过使用单元格,我们指定从中选择数据的行和列以及粘贴位置。

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

Range总是像Range("A1")那样使用Range(Cells(1,1),Cells(1,1)这里没有做。还有其他使用范围函数的方法,但这两种是最常见的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章