Вставить значение VBA в следующую пустую ячейку в диапазоне - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь скопировать и вставить значение из одного листа (C39 на листе 1) в следующую пустую ячейку в пределах диапазона на другом листе (от B6 до B18 на листе 2).Вот код, который я использую.

Sheets("Sheet1").Range("C39").Copy
With Sheets("Sheet2").Range("B6:B18").End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteValues
End With
End Sub

Когда я запускаю этот макрос, он продолжает перезаписывать B6 на Листе 2.В идеале, он будет видеть значение в B6 и вставлять в B7, а затем в B8 и т. Д. Что я могу сделать, чтобы исправить это?

Ответы [ 3 ]

0 голосов
/ 09 октября 2018

Вы можете установить значения, равные друг другу, а не копировать / вставлять.Несмотря на то, что для каждой ячейки прирост эффективности практически отсутствует.В больших масштабах это сэкономит память

Sub dural()

Sheets("Sheet2").Range("B16").End(xlUp).Offset(1, 0).Value = Sheets(“Sheet1”).Range(“C39”).Value

End Sub
0 голосов
/ 09 октября 2018

Это скопирует значение и вставит его в столбец B на листе 2.

Sub CopyPaste()

Dim lrow As Integer
Sheets("Sheet1").Range("C39").Copy - What cell value to copy
lrow = 18 'End row on Sheet2
For i = 6 To 18 'Loop from row 6 to 18
    If Cells(i, 2) = "" Then 'If cell is empty then paste new value
    Sheets("Sheet2").Range(Cells(i, 2), Cells(i, 2)).PasteSpecial xlPasteValues
    End If
Next i
End Sub
0 голосов
/ 09 октября 2018

Нужно начинать с B16 в Sheet2 и смотреть вверх:

Sub dural()
    Dim r1 As Range, r2 As Range
    Set r1 = Sheets("Sheet1").Range("C39")
    Set r2 = Sheets("Sheet2").Range("B16").End(xlUp).Offset(1, 0)
    r1.Copy r2
End Sub

(аналогично PasteSpecial)

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