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