Хорошо, прочитав все предложения, я понял, что независимо от того, что я делаю, любые Range
объекты, передаваемые моей функции, могут включать в себя либо ссылку на весь столбец , либо любую комбинацию перекрывающихся ссылок на Range, которые результат во всем выбранном столбце.
Но в переводе это означает ... все строки в данных, или UsedRange
. Это возможно при большом количестве данных, которые UsedRange
могут действительно попасть в последнюю строку в 1048576. И любая комбинация Range
ссылок, переданных моему Function
, может привести к огромной области, которая покрывает весь столбец, вплоть до максимальной строки.
Конечно, вероятность того, что это произойдет, очень мала, но мне нравится охватывать все основы в моем коде. Но ключ к этой загадке - UsedRange
. Это создает «синтетический максимум последней строки». Если GrandRange
, из-за отсутствия лучшего имени, покрывает все строки в UsedRange
, то моя функция не имеет ничего общего и не возвращает данных. И поэтому простой IF-Then-Exit должен дать мне решение, которое я искал:
If Intersect(UsedRange,LeGrandeRange).Rows.Count = UsedRange.Rows.Count Then
'All rows in `UsedRange` are affected.
'Nothing to do.
Exit Function
Else
'Do everything here.
'Then exit normally.
...
...
...
Endif