Как из параметра функции прочесть произвольный диапазон в массив?

Автор As, 08 марта 2024, 13:14

As

Function F1(r As Range)
arr = r.Value

Если передавать таким образом, то содержательно одномерные диапазоны либо высоты 1, либо ширины 1, передаются в двумерный массив, как и содержательно двумерные. Это ожидаемо. Но для меня оказалось неприятным сюрпризом, что в случаях, когда диапазон одновременно высоты и ширины 1, массив 1 на 1 не создаётся. Неужели придётся при каждой такой передаче ветвлением отчленять два случая, обрабатывая их отдельно?

Типа, как-то вот так.

If Not IsArray(arr)
dim tmp(1 To 1, 1 To 1)
tmp(1, 1) = arr
arr = tmp
End If

Администратор

Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.

Да, в коде нужно описывать две ситуации:
1) поступила одна ячейка;
2) поступило несколько ячеек.

Пакет MS Office считается хорошим, но часто можно встретить ситуации, когда не хватает каких-то элементарных вещей. Например, в Экселе нет поиска последней строки, хотя это нужно почти в каждом макросе. И программистам приходится самим что-то придумывать.