Существует нет прямого способа исправить это неожиданное поведение. Я понимаю, что в отношении объединенных ячеек ссылка на смещение основана на всей ячейке и что объединенные ячейки рассматриваются как одна ячейка, а не многие ячейки.
В вашем случае, если Range("B1:C1")
слито то следующий столбец (т.е. Offset(0,1)
) является столбец D. Excel рассматривает объединенный диапазон в одну ячейку и так с визуальной точки зрения следующий столбец вдоль является столбец D и не колонки C. Это может сбить с толку, на мой взгляд.
Лучший способ обойти это, чтобы избежать использования объединенных ячеек, как заголовки, но вместо того, чтобы использовать Centre Across Selection
форматирование:
1) Де-сливаться Range ("B1: C1")
2) Выбрать диапазон ("B1: C1")> Формат> Ячейки
3) в горизонтальном диалоговом окне выберите 'Центр Across Selection'
Если вы сделаете это, то следующий код будет работать:
Sub GetOffsets()
Dim rng As Range
Set rng = Range("B1")
Debug.Print rng.Offset(1, 0) // H2
Debug.Print rng.Offset(2, 0) // 1
Debug.Print rng.Offset(3, 0) // 3
Debug.Print rng.Offset(1, 1) // H3
Debug.Print rng.Offset(2, 1) // 2
Debug.Print rng.Offset(3, 1) // 4
End Sub
В чем смысл? диапазон («B1: C1»). offset (1,1) Диапазон IS C2: D2, но если B1: C1 слиты, то их смещение (1,1) равно D2. Попробуйте использовать клавиатуру, если не ясно: нажмите на объединенную ячейку, нажмите стрелку вправо, затем стрелку вниз. –