Я пытаюсь объяснить копирование непересекающихся диапазонов другу и обнаружил, что не могу даже объяснить это самому себе. У нас есть пример данных, таких как:

С очень простым примером кода, например:
Sub KopyTest()
Dim rng1 As Range, rng2 As Range, rng3 As Range
Set rng1 = Range("C6:D11,C13:D14,C16:D18")
Set rng2 = Range("C6:D11,F6:F11")
Set rng3 = Range("C6:D11,G9")
rng1.Copy
rng2.Copy
rng3.Copy
End Sub
rng1 состоит из трех непересекающихся блоков Желтый + зеленый + синий
rng2 состоит из двух непересекающихся блоков Желтый + розовый
rng3 состоит из двух непересекающихся блоков Желтая + единичная серая клетка
Первые два диапазона копируются просто отлично. rng3
не удается скопировать, и мы получаем сообщение об ошибке множественного выбора.
Мы не понимаем, какие наборы непересекающихся диапазонов можно скопировать напрямую, для каких наборов требуется UNION () , а какие наборы просто потерпят неудачу
Как только мы это поймем, мы можем составить некоторый код для анализа диапазона и определить, является ли он «копируемым» и не полагаться на OnError
.