VBA - копирование диапазона переменных с одного листа на другой

Я хотел бы скопировать данные из листа "Inv_Headers", столбец C, со 2-й строки до последней строки, на лист "Customers", столбец U, из 4-й строки.

Private Sub Invoice_C()
    Dim ws As Worksheet, ws1 As Worksheet
    Dim lastrow As Long

    Set ws = Worksheets("Inv_Headers")
    Set ws2 = Worksheets("CUSTOMERS")


        lastrow = ws.Cells(Rows.Count, 3).End(xlUp).Row ' last row in column C
        ws.Range("C2:C" & lastrow).Copy
        ws1.Range("U4").PasteSpecial xlPasteValues
        ws1.Activate


End Sub

Мой код дает мне сообщение об ошибке "91" - переменная объекта или переменная блока не установлены. Но код должен работать и без оператора With, не так ли?

Могу я попросить у вас совета, пожалуйста?

Большое спасибо!

2 ответа

Основываясь на проверке @Absinthe, я исправил опечатку, и вот правильный код:

Private Sub Invoice_C()
    Dim ws As Worksheet, ws1 As Worksheet
    Dim lastrow As Long

    Set ws = Worksheets("Inv_Headers")
    Set ws1 = Worksheets("CUSTOMERS")


        lastrow = ws.Cells(Rows.Count, 3).End(xlUp).Row ' last row in column C
        ws.Range("C2:C" & lastrow).Copy
        ws1.Range("U4").PasteSpecial xlPasteValues
        ws1.Activate


End Sub

В дополнение к предложению Srpic, я помню, что не заставлял эту часть работать:ws.Range("C2:C" & lastrow).Copy

Вы можете исправить это с ws.Range("C2", "C" & lastrow).Copy

Если вы начнете печатать в Range(), вы увидите, что , является приемлемым разделителем, тогда как : для неполного диапазона ассигнований нет.

Private Sub Invoice_C()
Dim ws As Worksheet, ws1 As Worksheet
Dim lastrow As Long

Set ws = Worksheets("Inv_Headers")
Set ws1 = Worksheets("CUSTOMERS")


    lastrow = ws.Cells(Rows.Count, 3).End(xlUp).Row ' last row in column C
    ws.Range("C2", "C" & lastrow).Copy
    ws1.Range("U4").PasteSpecial xlPasteValues
    ws1.Activate

End Sub

Другие вопросы по тегам