К сожалению, это сработало бы, только если ваша коллекция содержала один непрерывный диапазон.
С набором отключенных ячеек каждая ячейка является собственной Area
, и попытка прямого индексирования объединенного Range
даст вам неожиданные результаты: индекс будет применен к первая область, и, поскольку это одна ячейка, она будет выходить за границы , например, для диапазона A1, A5, C3, D6
, rng(3)
будет относиться к ячейке A3 (третья ячейка вниз относительно A1).
Чтобы индексирование работало так, как вам нужно, вам нужно явно указать свойство Areas
:
Dim coll As Range
' Set initial contents - has to be at least one cell, can be more
Set coll = some_worksheet.Range("A1,A5,C3")
' This is how you add to already stored "collection"
Set coll = Application.Union(coll, some_worksheet.Range("D6"))
coll.Areas(3) = 42 ' Sets C3 to 42