Копировать Вставить все строки, кроме заголовка, если условие выполнено - PullRequest
0 голосов
/ 24 мая 2019

У меня есть 2 листа, первый для базы данных всех продуктов, а второй для конкретного продукта. Я хочу скопировать данные из базы данных в таблицу продуктов на основе названия продукта.

Я написал этот код, но получил сообщение об ошибке в названии продукта

"Метод 'Range' объекта '_Worksheet' не выполнен.

Можете ли вы просмотреть и отредактировать мой код, пожалуйста? Я действительно ценю это.

Sub Amigos_Reza()        
    Dim productname As String
    Dim finalrow As Long, i As Long

    'clear old data from product table
    ShBF.Rows("6:" & ShBF.Rows.Count).ClearContents

    finalrow = ShPDE.Cells(Rows.Count, 3).End(xlUp).Row
    > productname = ShPDE.Range(i, 6).Value ' I tried to change i by the number of rows for example "5" and still got the same error message

    For i = 5 To finalrow
        If productname = "Amigoz" & "Reza" Then
            ShPDE.Range(Cells(i, 3), Cells(i, 10)).Copy
            ShBF.Cells(6, 3).PasteSpecial
        End If
    Next i

    With ShBF
        .Select
        .Range("A1").Select
    End With
End Sub

Что я должен сделать, чтобы изменить мою переменную, чтобы мой код работал?

1 Ответ

1 голос
/ 24 мая 2019

Вы получаете ошибку, потому что в этой строке productname = ShPDE.Range(i, 6).Value ваш i равен 0, но строка 0 не существует, поскольку подсчет строк начинается с 1.

iне определен вне вашего For цикла.


Обратите внимание, что "Amigoz" & "Reza" совпадает с "AmigozReza" Так что вы, вероятно, имели в виду что-то вроде

If productname = "Amigoz"  Or productname = "Reza" Then

Также обратите внимание, что вы вставляетевсегда в одну и ту же ячейку ShBF.Cells(6, 3).PasteSpecial, поэтому, если ваш цикл находит несколько названий продуктов, вы перезапишете пункт назначения.

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