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 считается хорошим, но часто можно встретить ситуации, когда не хватает каких-то элементарных вещей. Например, в Экселе нет поиска последней строки, хотя это нужно почти в каждом макросе. И программистам приходится самим что-то придумывать.