Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2013, 20:05   #1
KemanSR
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 129
По умолчанию Добавление смежного диапазона.

Необходимо добавить диапазон к другому диапазону, при условии что они смежные. Также необходимо чтобы они не объединялись.
Код:
Dim r1, r2 As range
Set r1 = range("A1:A3")
Set r2 = range("A4:A5")
Set r2 = Union(r1, r2)
... мне нужно получить диапазон включающий оба выше упомянутых. Ну а потом скорее всего с помощью Areas буду работать со всеми диапазонами.
Прошу снисхождения учу VBA два дня.( а так пишу на С/С++)

Спасибо за помощь, Алексей.
KemanSR вне форума Ответить с цитированием
Старый 13.02.2013, 20:23   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Вот такой вариант:
Код:
Sub Procedure_1()

    Dim rngRanges(1 To 2) As Excel.Range
    Dim i As Long
    
    Set rngRanges(1) = Range("A1")
    Set rngRanges(2) = Range("B1")
    
    For i = 1 To UBound(rngRanges) Step 1
        'Вывод результата в View - Immediate Window.
        Debug.Print rngRanges(i).Address
    Next i

End Sub
Скрипт вне форума Ответить с цитированием
Старый 13.02.2013, 20:31   #3
KemanSR
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 129
По умолчанию

Это Вы массив диапазонов создали? Мне необходимо передавать диапазон в другую функцию. А почему не смежные диапазоны добавляются "A1:A3, C5:C8", а смежные объединяются. ... и почему если есть Areas, то не работать с ним?
KemanSR вне форума Ответить с цитированием
Старый 13.02.2013, 21:06   #4
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Цитата:
KemanSR: А почему не смежные диапазоны добавляются "A1:A3, C5:C8", а смежные объединяются.
так придумали программисты из Microsoft.


Цитата:
KemanSRи почему если есть Areas, то не работать с ним?
вы же не знаете, как с ним работать, поэтому вам придётся что-нибудь другое придумать или ждать, когда вам подскажут.
Скрипт вне форума Ответить с цитированием
Старый 13.02.2013, 21:23   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
А почему не смежные диапазоны добавляются "A1:A3, C5:C8", а смежные объединяются
Видимо, так устроен Excel
Кстати, они не всегда объединяются.
Сколько работал с подобным объединением - диапазоны не объединялись
Попробовал ваш код - узнал много нового

Чем не устраивает вариант с массивом диапазонов?
EducatedFool вне форума Ответить с цитированием
Старый 13.02.2013, 21:26   #6
KemanSR
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 129
По умолчанию

Цитата:
Сообщение от Скрипт Посмотреть сообщение
вы же не знаете, как с ним работать
Думаю что Areas я осилю, мне бы смежные диапазоны в один запихать. Что неужели это невозможно? Может быть есть что-нибудь кроме Union, или параметры самого Union???
KemanSR вне форума Ответить с цитированием
Старый 13.02.2013, 21:28   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

KemanSR, задачу сформулируйте четче, возможно, и ответы будут конкретнее.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 13.02.2013, 21:44   #8
KemanSR
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 129
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
задачу сформулируйте четче
Задаем диапазон в котором встречаются повторяющиеся ячейки. Мне необходимо объединить содержимое и отформатировать его. Так как я только учусь, то я решил написать функцию которой передается диапазон. В диапазоне ищем повторяющиеся ячейки и создаем другой диапазон, состоящий из диапазонов повторяющихся ячеек. Его то функция и должна вернуть, ну а я уж бы форматнул бы по вкусу. Конечно можно форматировать в этой функции по мере нахождения, просто на си я бы предпочел сабж.
KemanSR вне форума Ответить с цитированием
Старый 13.02.2013, 21:49   #9
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Код:
set r2=union(range("A1:A3"),range("A4:A5")) 'r2.Areas.Count = 1
 
set r2=range("A1:A3,A4:A5") 'r2.Areas.Count = 2
Такие дела
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 13.02.2013, 21:57   #10
KemanSR
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 129
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Такие дела
Что, предлагаете генерировать строку, а потом создавать диапазон на ее основе?
KemanSR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расчет диапазона Натали555 Microsoft Office Excel 5 23.01.2013 12:53
Сортировка диапазона IP, $5 djbub14 Фриланс 1 05.11.2011 07:19
Выделение диапазона Vellosity Microsoft Office Excel 2 16.10.2011 10:09
Узнавание диапазона Drean Microsoft Office Excel 7 26.10.2010 07:57
Random из диапазона garyanikin Общие вопросы Delphi 3 15.05.2010 19:20