Прежде всего, я хотел бы остановиться на том, что использование Select
в большинстве случаев не рекомендуется. Поскольку вы просто хотите вставить значение в другие ячейки, вы можете просто использовать строку, как в следующем примере:
Range("A1:A10").Value = Range("C2:C11").Value
или
Range("A1:A10").Value = 1
Это заполнит диапазон A1:A10
значениями C2:C11
или целым числом 1 соответственно. Обратите внимание, что два диапазона в первой строке имеют одинаковый размер.
Теперь, динамический c подход к вашей проблеме может быть чем-то вроде следующего примера
'Initialise two range variables
Dim SourceRange As Range, TargetRange As Range
'And integers for target rows
Dim fRow As Long, lRow As Long
With ThisWorkbook 'Assuming the code needs to be performed on the Workbook that hosts the macro
'Determine target rows
fRow = 23 'You have not specified how the first row should be determined
lRow = .Cells(fRow, "E").End(xlDown).Row
'Populate range vars
Set SourceRange = .Range("E12")
Set TargetRange = .Range(.Cells(fRow, "E"),.Cells(lRow, "E"))
'Paste values to target range
TargetRange.Value = SourceRange.Value
End With
Обратите внимание, что поскольку вы не указали, как это следует определять, приведенный выше код жестко запрограммирован, чтобы иметь целевой диапазон в столбце E
, который начинается в строке 23.