Использование именованных диапазонов в качестве аргументов подпрограммы в VBA Excel - PullRequest
1 голос
/ 10 марта 2020

Я хотел, чтобы подпрограмма добавила указанную строку из одного именованного диапазона в конец другого именованного диапазона и не смогла найти никаких ссылок на метод. Через пару ходов я придумал следующее. Могут быть встроенные функции, которые делают это, если вы знаете, где их найти, но этот код работает для меня.

'==== Добавить указанную строку "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
...