Забудьте об объекте rng
в целом. Это было бы более необходимо в операторе For Each
, но вы просто просматриваете строки на своем листе.
Создайте простой оператор For i
, который просто зацикливает нужные вам строки:
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = ThisWorkbook.Worksheets("Sheet1")
Set ws2 = ThisWorkbook.Worksheets("Sheet2")
Dim i As Long
For i = 4 To 17
If Not IsEmpty(ws1.Cells(i, 2)) Then
ws1.Cells(i, 4).Copy ws2.Range("A1")
End If
Next i
Как я уже указывал, место назначения вашей копии ws2.Range("A1")
- это stati c, поэтому каждый раз, когда ваш критерий удовлетворяется, он продолжает перезаписывать ваши данные здесь. Но вы, кажется, справились с этим, поэтому я не буду предполагать, что вы пытаетесь с этим делать.