Страницы: 1
RSS
VBA. Активация скрытого листа
 
всем привет. спешу поделиться
тут у меня случилась эврика.
совершенно на ровном месте.
и теперь я в непонятках - то ли в патентное бюро бежать, то ли молчать в тряпочку, чтоб глупость не так видно было.

дело в том, что я до сих пор был твёрдо уверен - скрытые листы в коде активировать нельзя.
не для того они скрыты.
что произойдёт, если попытаться это сделать - я как-то глубоко не задумывался.
точнее - совсем не думал над этим.
а сегодня в одной теме на кибере почти вляпался.

в приложении - файлик с кодом.
на листах 1, 2, 3 в ячейках A1 - соответственно значения 1, 2 и 3.
лист 3 скрыт.
код, имхо, отрабатывает неадекватно - по сути, активирует скрытый лист.

но есть ещё более интересный момент.
аналогичный код
Код
sheets(2).activate:sheets(3).activate:? [a1]
выполняемый в окне Immediate именно в таком виде - даёт 3.
а вот записанный в две строчки:
Код
sheets(2).activate:sheets(3).activate
? [a1]
и выполненный построчно - даёт так ожидаемую мною двойку.

претензий к майкрософту у меня, конечно, нет.
но я так и не понял - это баг или фича?
кто знает?
Изменено: ikki - 25.12.2014 03:05:49
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
ikki, здравствуйте, скажите, пожалуйста, а что означает "?" перед [a1]? Спасибо.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Это когда мы в окне Immediate хотим "спросить" - посмотреть результат))
 
Цитата
JayBhagavan пишет: а что означает "?" перед [a1]? Спасибо.
Это вместо Debug.Print.
Изменено: Johny - 25.12.2014 13:23:41
There is no knowledge that is not power
 
Цитата
и будет счастье.  :D  
А позвольте полюбопытствовать - в чём счастье? При xlSheetVeryHidden процедура t выдаёт тоже самое 3 в MsgBox.
Изменено: Андрей VG - 25.12.2014 11:31:36
 
Юрий М, Johny, спасибо. Понял.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Щас потестировал. :) Всё дело в том, что скрытость на то и скрытость - она просто скрывает из вида этот лист. xlSheetVeryHidden, действительно, тут ни при чём. Но он не препятствует программному доступу. У меня на работе как раз такая книга есть. На таком "очень скрытом листе" нужные настройки для работы. Поэтому ничего удивительного, что его можно актививровать. :D
There is no knowledge that is not power
 
Цитата
а вот записанный в две строчки:
и выполненный построчно - даёт так ожидаемую мною двойку.
видимо, скрытый лист активируется временно, - на время выполнения макроса
а как макрос выполнен, - управление возвращается пользователю,
а для пользователя скрытый лист не может быть активным, потому активность автоматически возвращается листу 2


ikki, вы всё еще активируете листы? ))
я уже забыл, когда писал слово activate в коде
у меня, все обращения к листам - только по кодовым именам (если код выполняется из того же файла, где эти листы находятся)
 
угум...
значит, таки "фича"   :)  

Цитата
ikki, вы всё еще активируете листы? ))
Игорь, вопрос возник из темы http://www.cyberforum.ru/vba/thread1340586.html
Изменено: ikki - 25.12.2014 17:47:10
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
Страницы: 1
Наверх