Страницы: 1
RSS
Обращение к ячейкам объединенных диапазонов
 
Доброго времени суток, форумчане!

Столкнулся с проблемой обращения к ячейкам в объединенных диапазонах. Ниже кусок кода:
Код
Dim rr As Range
Set rr = Union(Range("A1:A3"), Range("B1:D1"))

Debug.Print rr.Cells.Count          'значение 6 - всё верно
Debug.Print rr.Cells(1).Address     'значение $A$1 - всё верно
Debug.Print rr.Cells(2).Address     'значение $A$2 - всё верно
Debug.Print rr.Cells(4).Address     'значение $A$4 - хотелось бы получить значение $B$1 - четвертой ячейки объединенного диапазона rr

Имеется диапазон ячеек, объединенных из двух диапазонов "A1:A3" и "B1:D1".
Хотел обращаться к ячейкам по их индексу в объединенном диапазоне "rr" , то есть всего ячеек 6, первая - это А1, вторая А2 ... шестая D1
Не понимаю логику обращения. До А3 идет как мне представляется, далее просто вниз продолжается.

Кто-нибудь сталкивался с такой проблемой? Можете подсказать пути решения? или лучше в словарь/массив нужные ячейки загонять?
 
Попробуйте вот так.
Код
Dim rr As Range
Set rr = Union(Range("A1:A3"), Range("B1:D1"))
 
Debug.Print rr.Cells.Count
Debug.Print rr.Areas(1).Cells(1).Address
Debug.Print rr.Areas(1).Cells(2).Address
Debug.Print rr.Areas(2).Cells(1).Address
 
Sceptic, Спасибо, то что нужно!
 
Или так:
Код
Dim rr As Range, a, b
Set rr = Union(Range("A1:A3"), Range("B1:D1"))
a = rr(1, 1)
a = rr(2, 1)
a = rr(3, 1)
'что характерно - можно вылезти за рамки указанного диапазона и считать данные из "E1" (b=rr(1,5)) и на это не выдаст ошибку
b = rr(1, 2)
b = rr(1, 3)
b = rr(1, 4)
Изменено: Anchoret - 06.09.2019 00:45:55
Страницы: 1
Наверх