[CDR 2017-2022] после While doc.GetUserClick не сохраняет

  • Автор темы Автор темы DukereD
  • Дата начала Дата начала

DukereD

макрософил
Топикстартер
Сообщения
545
Реакции
140
После использования конструкции while и GetUserClick если корректно не нажать на Esc то корел глючит и перестает сохранять и закрывать документы. а принажатии на паузу в VBA вообще вылетает, а иногда пишет ошибку "Can`t enter break mode at this time"

Код:
While doc.GetUserClick(X, Y, Shift, 10, True, cdrCursorExtPick) = 0
    'тут типа код
Wend

как от этого избавиться словить этот глюк или может какую-то другую конструкцию можно использовать?
 
А как макрос определит где его конец?
 
Я понимаю, вопрос - как вы это мыслите без ESC?
при закрытии на крестик или нажатии на какую-то другую кнопку, на клике в пустоту... да как угодно. я вот и спрашиваю какой способ лучше сделать.
просто если не нажать ESC то оно висит в каком-то режиме подвисшего цикла.
хоть на событие терминэйт формы повесить.... знать бы что )))
 
единственное, что пока сделал - это hide форме чтобы нельзя было нажать других кнопок.
а если это просто макрос без формы? можно же другой запустить. и снова подвиснет все.
в общем похоже очередная "дыра" в VB
 
Попробуйте перехватить событие закрытия формы и отправлять ESC принудительно
 
Попробуйте перехватить событие закрытия формы и отправлять ESC принудительно
если форма - тут понятно.. а если не форма... пользователь же может нажать и запустить любой другой макрос ((((
 
если форма - тут понятно.. а если не форма... пользователь же может нажать и запустить любой другой макрос ((((
Тогда еще раз повторяю вопрос:
А как макрос определит где его конец?
А то ишь разбаловала всех многозадачность. VBA - это не многозадачная и не многопотоковая система, запущенный макрос воюет с переменным успехом даже с базовым кореловским функционалом. ;)
 
Тогда еще раз повторяю вопрос:

А то ишь разбаловала всех многозадачность. VBA - это не многозадачная и не многопотоковая система, запущенный макрос воюет с переменным успехом даже с базовым кореловским функционалом. ;)
так это понятно. я поэтому то и спросил есть ли какой то метод. но похоже его нет. )
 
Ответ на этот вопрос найдется как только вы придумаете стопроцентный признак, по которому надо цикл завершать. Закрытие формы, запуск другого макроса, закрытие документа или переключение на другой и т.д.
Вопрос из разряда тех, которые содержат в себе ответ при правильной постановке ;)
 
Ответ на этот вопрос найдется как только вы придумаете стопроцентный признак, по которому надо цикл завершать. Закрытие формы, запуск другого макроса, закрытие документа или переключение на другой и т.д.
Вопрос из разряда тех, которые содержат в себе ответ при правильной постановке ;)
ну это то понятно. просто мало ли есть какой-то другой способ бесконечного цикла типа модальное окно которое не дает ничего лишнего нажимать )))
 
ну это то понятно. просто мало ли есть какой-то другой способ бесконечного цикла типа модальное окно которое не дает ничего лишнего нажимать )))
Так модальное окно вас и к макету не пустит же
 
Так модальное окно вас и к макету не пустит же
модальное окно - это понятно.. я про принцип в целом )
в итоге сделал чтобы форма просто пряталась чтобы пользователь ничего лишнего не нажал.. вроде тест показал норм результат )