Как я могу исправить ошибки во время выполнения VBA 1004 или 424 - PullRequest
1 голос
/ 06 июня 2019

Я довольно новичок в программировании, и это мой первый проект. Я избавился от всех других проблем, но теперь я застрял. Мой код должен сравнивать записи на одном листе с записями на другом листе и, когда выполняются два условия, копировать данные из этой строки в соответствующую строку на другом листе. Если данные копируются точно, это год, который также указан в строке.

Я пробовал различные способы копирования данных с помощью 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

Вы можете увидеть мой код ниже, я пропустил некоторые вещи, потому что они не имеют отношения к проблеме. Кроме того, я публикую только первые два условия, если остальные 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

Сообщение об ошибке появляется во второй строке ниже комментария «Вставить на основе года». Заранее большое спасибо!

1 Ответ

1 голос
/ 06 июня 2019

Я объясню здесь, чтобы другие пользователи тоже могли это видеть:

Проблема была с использованием функции 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, но эти два являются наиболее распространенными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...