Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2010, 16:24   #1
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию как защититься от ESC при сохранении книги?

Здравствуйте все!
После закрытия формы идет длительный процесс сохранения книги с последующим ее закрытием. Если в это время нажать ESC, происходит непредсказуемый сбой с выходом в дебугер vba.
Ни Form_KeyPress ни OnKey не работают....
Более того, отключение ESC и при работающей проге не удается - событие нажатия клавиши отлавливается только при "холостом" нажатии (например, выводится соответствующее сообщение), а если нажимаем при вводе значений в ячейку или в форму - ESC работает как положено и событие не отлавливается -(
Преодолима ли ситуация?
alvazor вне форума Ответить с цитированием
Старый 29.01.2010, 16:55   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

application.EnableCancelKey=xlDisabled не помогает?

Не увидев файла с кодом, сложно что-либо посоветовать...
EducatedFool вне форума Ответить с цитированием
Старый 29.01.2010, 17:14   #3
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию

Попробовал, не помогает
Код простой:

Sub Start()
'запуск формы
UserForm.Show

With Application
.OnKey "%{F11}", ""
.EnableCancelKey = xlDisabled
End With

End Sub

Код - в надстройке
alvazor вне форума Ответить с цитированием
Старый 01.02.2010, 12:38   #4
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию

Во вложении - в файле Excel - вставлены в Workbook_Activate и команда application.EnableCancelKey=xlDisab led и OnKey (формирует сообщение при нажатии клавиши Esc). Запускайте файл из родной папки, не стирая Data.txt - это просто демо-пример, его алгоритм к делу не относится
Если клавиша нажимается без входа в ячейку листа - событие отлавливается, но стоит зайти внутрь ячейки - пропадает (при этом Esc работает, как положено, т.е отменяет изменения)
После выхода из ячейки - событие снова отлавливается. А ведь события книги при этом не менялись?
Более того, если выйти из программы при наличии хотя бы еще одного открытого файла Excel (выход - через клавишу ВЫХОД формы, при этом закрывается и форма и книга без сохранения) и нажать Esc в незакрытом листе - мой файл снова запускается! И после его открытия сразу идет сообщение о нажатии клавиши..... Совсем непонятно, по каким событиям эту клавишу ловить???
Вложения
Тип файла: rar Invert_with_Esc.rar (24.5 Кб, 7 просмотров)
alvazor вне форума Ответить с цитированием
Старый 02.02.2010, 16:20   #5
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию Вроде как и сам допер...

Спасибо, EducatedFool за участие, а то опять больше диалог самого с собой

Прочитал, что команда OnKey не действует при вводе данных в ячейку листа и при работе с элементами управления формы! При этом Esc действует, как ей положено, а, допустим, Alt+F11 просто «молчит» (остальные сочетания, видимо, надо проверять специально)
Касательно application.EnableCancelKey=xlDisab led , так судя по справке ее надо повторять каждый раз при вызове процедуры. При неактивном Excel и при отсутствии выполняемого кода ОНО автоматом возвращается в xlInterrupt
Особенно непредсказуемые ситуации при наличии нескольких открытых файлов Excel.
Если кого заинтересует - см. вложение (не удаляйте Data.txt из текущей папки - это исходные данные). Там еще синхронизация видимости формы с видимостью других открытых книг (ShowModal = False)
Если мне хочется услышать умные речи, я просто начинаю говорить
С уважением
Вложения
Тип файла: rar Invert_with_Esc_1.rar (25.9 Кб, 7 просмотров)
alvazor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как защититься от взлома почты и что делать при её взломе??? alex(21) Безопасность, Шифрование 43 25.09.2014 17:36
Ошибка при сохранении БД Xeon332 Помощь студентам 2 05.01.2010 17:00
Ошибки при сохранении Alex19789 Microsoft Office Excel 6 16.10.2009 12:39
Макрос при сохранении Полина Л. Помощь студентам 0 14.09.2009 16:30
excel+vba странности взаимодействия при сохранении книги без макросов alvazor Microsoft Office Excel 7 06.07.2009 17:22