Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Использование диапазона не смежных ячеек для пользовательской функции в Excel / 5 сообщений из 5, страница 1 из 1
27.02.2013, 13:12
    #38167890
Евген1985
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование диапазона не смежных ячеек для пользовательской функции в Excel
Подскажите если кто встречался с подобным или есть ссылки на почитать.
Цель: Написать пользовательскую функцию, в которую вводиться диапазон из не смежных областей и далее с этим диапазоном поработать.
Проблема: Не могу понять принцип работы с подобным видом диапазонов.

Как я понял для работы с не смежными диапазонами используется коллекция Areas объекта Range. Для начала хочу написать простую функцию которая бы возвращала адреса не смежных диапазонов. Пишу
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Function RangeToStr(a_range As Range) As String
    Dim StrRange As String
    StrRange = ""
    Dim iRange As Range
    For Each iRange In a_range.Areas
    
         If StrRange <> "" Then StrRange = StrRange & ","
         StrRange = StrRange & iRange.Address
    
    Next iRange

    RangeToStr = StrRange
    
End Function



собственно говоря это дело выдает ошибку. Причем для одного смежного диапазона считает нормально. Как только добавляешь другой через ctrl вылезает ошибка. Может кто знает что я не так делаю.
...
Рейтинг: 0 / 0
27.02.2013, 13:20
    #38167907
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование диапазона не смежных ячеек для пользовательской функции в Excel
Евген1985,

Используйте ParamArray:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Public Function RangeToStr(ParamArray rRange()) As String
    Dim StrRange As String
    StrRange = ""
    Dim iRange As Range, li As Long
    
    For li = LBound(rRange) To UBound(rRange)
        Set iRange = rRange(li)
         If StrRange <> "" Then StrRange = StrRange & ","
         StrRange = StrRange & iRange.Address
    Next li
    RangeToStr = StrRange
    
End Function
...
Рейтинг: 0 / 0
27.02.2013, 13:36
    #38167963
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование диапазона не смежных ячеек для пользовательской функции в Excel
Используйте такой синтаксис вызова функции:
Код: plaintext
=RangeToStr((K2:K6;M3:O3;N7))
Скобки - оператор объединения диапазонов, а пробел - оператор пересечения, например
Код: plaintext
=RangeToStr(L:L 5:5)
дает $L$5.
...
Рейтинг: 0 / 0
27.02.2013, 16:51
    #38168336
Евген1985
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование диапазона не смежных ячеек для пользовательской функции в Excel
The_Prist,

Спасибо, Получилось.
...
Рейтинг: 0 / 0
27.02.2013, 16:57
    #38168348
Евген1985
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование диапазона не смежных ячеек для пользовательской функции в Excel
Казанский,

Спасибо, тоже работает. Вчера ломал голову как это сделать, а теперь сразу 2 способа. Класс.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Использование диапазона не смежных ячеек для пользовательской функции в Excel / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]