эффект наложения одной формы excel на другую

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
district
Сообщения: 56
Зарегистрирован: 13 ноя 2007, 23:03
Откуда: Москва

У меня в процессе отработки кода находящегося внутри формы вызывается другая форма, которое накладывается на первую. Получается некрасиво. Никак не могу понять что именно здесь надо использовать.

Процедура вкратце такова:
окно1.show
<начинает отрабатываться код внутри:
....
окно1.hide
окно2.show
....>

Результат - окно2 отображается поверх окна1, а не вместо (как задумывалось)

Вопроса два:
1) что из нижеперечисленного действительно оказывает влияние на избавление от визуального эффекта наложения окон друг на друга)
2) есть еще команды (?) помимо
а) application.screenupdating
б) do events
в) unload me (вместо hide)
г) кода задержки выполнения макроса после скрытия форма1 и перед выводом на экран формы2 на, в данном примере, 4 секунды (экспериментировал с ним предполагая, что системе нужно давать передых, чтобы графическая карта помноженная на скорость интернет - работаю удаленно - успевала обновлять изображение):
newhour = Hour(Now())
newminute = Minute(Now())
newSecond = Second(Now()) + 4
waittime = TimeSerial(newhour, newminute, newSecond)
Application.Wait waittime
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Сорри, разобрался кажется сам.
application.screenupdating = true в чистом виде (то есть без микса с вариантами б), в) и г) все-таки решил проблему в данном случае. Следующей же строкой отключаю обновление и ву а ля - никаких лишних морганий экрана.

Тут же возникла новая проблема уже совсем с другой формой, которая должна была просто висеть во время работы одной из длинных процедур - текст формы не отражался. Здесь помогло
application.screenupdating = true
do events
application.screenupdating = false
Полагаю такой вариант должен всегда спасать в случае подобных проблем.
Ответить