Я хотел, чтобы подпрограмма добавила указанную строку из одного именованного диапазона в конец другого именованного диапазона и не смогла найти никаких ссылок на метод. Через пару ходов я придумал следующее. Могут быть встроенные функции, которые делают это, если вы знаете, где их найти, но этот код работает для меня.
'==== Добавить указанную строку "Ix" из одного именованного диапазона "Rsource" к нижняя часть другого именованного диапазона "Rdestination" ==== 'Количество скопированных значений является меньшим из числа столбцов в 2 диапазонах
Public Sub AppendTuple(Rsource As String, Rdestination As String, Ix As Long)
Dim I As Long, J As Long, Ar As Long, K As Long
' --- how many values to copy
If Range(Rsource).Columns.Count <= Range(Rdestination).Columns.Count Then
I = Range(Rsource).Columns.Count
Else
I = Range(Rdestination).Columns.Count
End If
' --- add a row to Range(Rdestination)
Ar = Range(Rdestination).Rows.Count + 1
Range(Rdestination).Resize(Ar).Name = Rdestination
' --- copy/paste the data to the new row
For J = 1 To I
Range(Rdestination).Cells(Ar, J) = Range(Rsource).Cells(Ix, J)
Next
End Sub
Это было проверено с помощью кнопки на пользовательской форме для позвоните выше. Два диапазона с именами «InRow» (12 на 6) и «OutRow» (1 на 4), созданные вручную.
Private Sub CommandButton2_Click()
Dim Ir As Long
Ir = Int((12) * Rnd + 1) ' random integer between 1 and 12
Call AppendTuple("InRow", "OutRow", Ir)
End Sub