Страницы: 1
RSS
Не работает событие Application.ScreenUpdating
 
Доброго всем время дня!  
 
Вопрос теотиритечский, поэтому не вижу смысла прилагать пример.  
 
В отлаженной программе, в модуль листа в порядке эксперимента был    
введен макрос срабатывающий по событию Worksheet_Change(ByVal Target As Excel.Range)  
тело макроса содержало процедуру Application.EnableEvents = False/True  
 
После эксперимента макрос был УДАЛЕН!!! Никаких других изменений в программу не    
вносилось!!  
 
Однако, после удаления указанного макроса, ВО ВСЕХ ОТСТАЛЬНЫХ МАКРОСАХ данной рабочей книги перестала выполняться процедура Application.ScreenUpdating = False/True    
Перезагрузка, открытие резервной копии программы не помагает.  
 
Не могу сообразить с чем это может быть связано, подскажите пожалуйста мысль?!
 
И выполнение Application.ScreenUpdating= True не помогает?
 
{quote}{login=sofi}{date=15.05.2011 09:12}{thema=Не работает событие Application.ScreenUpdating}{post}  
Не могу сообразить с чем это может быть связано, подскажите пожалуйста мысль?!{/post}{/quote}  
наверное, со слабым знанием "теотиретии" (не опечатался?)  
попробуйте в окне Immediate ввести Application.EnableEvents = True и нажать Enter
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Не пойму: в теме .ScreenUpdating, в сообщении .EnableEvents
 
то "событие Application.ScreenUpdating", то "процедура Application.ScreenUpdating"...  
 
никакой теории, метод тыка в действии.  
результаты - соответствующие.  
 
пс. на самом деле это свойство.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
{quote}{login=Юрий М}{date=15.05.2011 09:17}{thema=}{post}И выполнение Application.ScreenUpdating= True не помогает?{/post}{/quote}  
 
Ответ Юрию:    
"ТЕЛО УДАЛЕННОГО макроса СОДЕРЖАЛО процедуру  
Application.EnableEvents = False/True  
После удаления макроса, ВО ВСЕХ ОТСТАЛЬНЫХ МАКРОСАХ данной рабочей книги перестала выполняться процедура Application.ScreenUpdating = False/True"    
Application.ScreenUpdating = True - не помогает  
 
Ответ The_Prist:  
1."Не замораживает"  
2. Определяется визуально, поскольку практически все макросы программы связанны с заполнением листов рабочей книги!  
 
Ответ ikki:  
"в окне Immediate Application.EnableEvents = True и нажать Enter"  
никакого результата.
 
{quote}{login=The_Prist}{date=15.05.2011 09:37}{thema=}{post}Где-то значит что-то еще выполняется. В модулях листов, книги...Подобная мистика не возникает на ровном месте. лучше один раз увидет файл, чем сто раз услышать, что не работает...{/post}{/quote}  
 
The_Prist совершенно с Вами согласен, что "мистика", а чудес не бывает!!!  
 
Программа содержит 43 макроса, все в общих модулях!  
Попытка была добавить макрос в модуль листа и этот макрос содержал процедуру    
Application.EnableEvents.  
Этот макрос сейчас УДАЛЕН!  
Тем не менее ВО ВСЕХ 43 макросах перестала выполняться процедура  
Application.ScreenUpdating = False/True
 
Не сохраняли ли Вы что-нибудь в личную книгу макросов?
 
Юрий, нет в личную книгу не сохранял!    
 
Но нашел в чем дело! Если объясните, почему так, буду очень признателен!    
 
В общем модуле находится код, выводящий данные на лист:  
 
Sub tt  
Sheets("Лист").Activate  
 
Call Панель  
Application.ScreenUpdating = False    
 
Range(Cells(1, 1), Cells(Rows.Count, 9)).EntireRow.Clear    
*******тело макроса***********  
Application.ScreenUpdating = True    
End sub  
 
Sub Панель  
With Application  
.ScreenUpdating = False  
.Caption = IIf(Value = True, Empty, "Программа")  
.DisplayStatusBar = Empty  
.DisplayFormulaBar = Empty  
.CommandBars("Worksheet Menu Bar").Enabled = Value  
.CommandBars("Standard").Enabled = Value  
.CommandBars("Formatting").Enabled = Value  
.CommandBars("Visual Basic").Enabled = Value  
         
       With .ActiveWindow  
           .Caption = IIf(Value = True, .Parent.Name, ActiveWorkbook.Name)  
           .DisplayHeadings = Value  
           .DisplayGridlines = Value  
           .DisplayHorizontalScrollBar = Value  
       End With  
 
.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"", False)"  
.ScreenUpdating = True  
End With  
End sub  
 
Так вот, если процедура Application.ScreenUpdating = False    
стоит после процедуры Call Панель, то все ХОРОШО!  
 
Если наоборот, то Application.ScreenUpdating = False не работает  
ВО ВСЕХ ОСТАЛЬНЫХ МАКРОСАХ!  
 
Спасибо!
 
а что такое у вас Value ?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
{quote}{login=The_Prist}{date=15.05.2011 10:25}{thema=Re: }{post}{quote}{login=sofi}{date=15.05.2011 10:11}{thema=}{post}Так вот, если процедура Application.ScreenUpdating = False    
стоит после процедуры Call Панель, то все ХОРОШО!{/post}{/quote}Так а что Вы удивляетесь? Ведь как раз в этой процедуре(Панель) так же отключается и включается обновление. И в конце макроса - ВКЛЮЧАЕТСЯ. Т.е. после выполнения кода Панель обновление ВКЛЮЧЕНО.{/post}{/quote}  
 
Совершенно верно!  
Когда написал оба макроса единым кодом, сам увидел!  
Всем спасибо за помощь! Удачи!
 
{quote}{login=ikki}{date=15.05.2011 10:22}{thema=}{post}а что такое у вас Value ?{/post}{/quote}  
Жаль, что осталось без ответа.
 
Вопрос наверное, надо было поставить чуть иначе.  
А разве можно использовать в качестве переменных зарезервированные слова?
 
{quote}{login=RAN}{date=15.05.2011 10:45}{thema=}{post}Вопрос наверное, надо было поставить чуть иначе.  
А разве можно использовать в качестве переменных зарезервированные слова?{/post}{/quote}  
 
имена операторов - нет. точнее - слова собственно языка VBA.  
имена свойств и функций - можно. это не зарезервированные слова.  
но возможны конфликты, имхо.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
Страницы: 1
Читают тему
Loading...