Довольно часто у меня стоит такая задача, что макрос должен сработать с выделенныи диапазоном за исключением некторых строк или столбцов. Например, исключить из выделенной области первые 2 строки, если они попали в выделение. Я пользуюсь конструкцией:
Код |
---|
Set result_rng = Intersect(Selection, [3:1048576]) |
И работаю уже с result_rng. Но такая конструкция мне не нравится, в *.xls файлах 64000 строк а не 1000000 как в более новых форматах, да и количество столбцов там меньше. Да и при исключении диапазона в середине книги (допустим макрос должен сработать на всем выделенном диапазоне кроме B2:C4) выражение для дополнения B2:C4 до полного диапазона листа и задание нужного превращается в:
Код |
---|
Set result_rng = Intersect(Selection, Union([1:1], [5:1048576], [A:A], [D:XFD])) |
Что делает нечитабельным код, и не совсем очевидно, какой же диапазон исключается. А если исключаемый диапазон динамически определяет сам макрос, то такой метод прямого указания вообще не подходит.
Подскажите, знает ли кто-нибудь более правильный способ лишенный всех вышеперечисленных недостатков?