всем привет. спешу поделиться тут у меня случилась эврика. совершенно на ровном месте. и теперь я в непонятках - то ли в патентное бюро бежать, то ли молчать в тряпочку, чтоб глупость не так видно было.
дело в том, что я до сих пор был твёрдо уверен - скрытые листы в коде активировать нельзя. не для того они скрыты. что произойдёт, если попытаться это сделать - я как-то глубоко не задумывался. точнее - совсем не думал над этим. а сегодня в одной теме на кибере почти вляпался.
в приложении - файлик с кодом. на листах 1, 2, 3 в ячейках A1 - соответственно значения 1, 2 и 3. лист 3 скрыт. код, имхо, отрабатывает неадекватно - по сути, активирует скрытый лист.
но есть ещё более интересный момент. аналогичный код
Код
sheets(2).activate:sheets(3).activate:? [a1]
выполняемый в окне Immediate именно в таком виде - даёт 3. а вот записанный в две строчки:
Код
sheets(2).activate:sheets(3).activate
? [a1]
и выполненный построчно - даёт так ожидаемую мною двойку.
претензий к майкрософту у меня, конечно, нет. но я так и не понял - это баг или фича? кто знает?
Щас потестировал. Всё дело в том, что скрытость на то и скрытость - она просто скрывает из вида этот лист. xlSheetVeryHidden, действительно, тут ни при чём. Но он не препятствует программному доступу. У меня на работе как раз такая книга есть. На таком "очень скрытом листе" нужные настройки для работы. Поэтому ничего удивительного, что его можно актививровать.
а вот записанный в две строчки: и выполненный построчно - даёт так ожидаемую мною двойку.
видимо, скрытый лист активируется временно, - на время выполнения макроса а как макрос выполнен, - управление возвращается пользователю, а для пользователя скрытый лист не может быть активным, потому активность автоматически возвращается листу 2
ikki, вы всё еще активируете листы? )) я уже забыл, когда писал слово activate в коде у меня, все обращения к листам - только по кодовым именам (если код выполняется из того же файла, где эти листы находятся)