如果满足条件,则复制粘贴除标题以外的所有行

时间:2019-05-24 10:05:23

标签: excel vba

我有2张纸,第一张纸用于数据库所有产品,第二张纸用于特定产品,我想根据产品名称将数据库中的数据复制到产品表中。

我编写了这段代码,但收到有关产品名称的错误消息

  

“对象'_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 个答案:

答案 0 :(得分:1)

您会收到错误,因为在此行productname = ShPDE.Range(i, 6).Value中,您的i0,但行0不存在,因为行计数以1开始。

i不在For循环之外定义。


请注意,"Amigoz" & "Reza""AmigozReza"相同,因此您可能表示类似

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

还请注意,您总是将其粘贴到完全相同的单元格ShBF.Cells(6, 3).PasteSpecial中,因此,如果循环中找到多个产品名称,则将覆盖目标位置。