Я написал процедуру, которая немного более общая, чем вопрос @FahmiYogyas. Предположим, что исходный диапазон является именованным диапазоном из одной или нескольких ячеек (здесь NamedRange1
), а верхняя левая ячейка назначения является вторым именованным диапазоном (здесь NamedRange2
).
Option Explicit
'
' start this as example
'
Sub test1()
copyData Range("NamedRange1"), Range("NamedRange2")
End Sub
'
'
'
Sub copyData(sourceRange As Range, destinationRange As Range)
Dim myCell As Range
Dim columnOffset As Long
Dim firstCell As Range
Dim isFirst As Boolean
'
' increase the column offset until the first destination cell is empty
'
Do While Not IsEmpty(destinationRange.Offset(0, columnOffset))
columnOffset = columnOffset + 1
Loop
isFirst = True
'
' now get the value of the source cells
' and insert it at the destination position
' offset is used to allow for arbitrary source ranges
For Each myCell In sourceRange
If isFirst Then
Set firstCell = myCell
isFirst = False
End If
destinationRange.Offset(myCell.Row - firstCell.Row, myCell.Column - firstCell.Column + columnOffset).Value = myCell.Value
Next
End Sub