[CDR 2017-2022] Создать окно с уведомлением и продолжить выполнение макроса

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

tohaa

Участник
Топикстартер
Сообщения
249
Реакции
14
Добрый день. Возможно ли в процессе выполнения макроса выводить уведомления о процессе обработки? Без прерывания выполнения макроса и ожидания нажатия на кнопку messagebox.

Например:
Файл найден - ok
Файл импортирован - ок
Обработан текст - ок
Файл сохранен - ок

Гугл мне не помог. Надеюсь на Вас)
 
Добрый день. Возможно ли в процессе выполнения макроса выводить уведомления о процессе обработки? Без прерывания выполнения макроса и ожидания нажатия на кнопку messagebox.
Перенести код в форму и выводить на ней. Можно и прогрессбар из двух Label сделать.

Можно в окне Immediate:
Код:
Debug.Print "TEXT"
 
  • Спасибо
Реакции: tohaa
прогресс бар можно сделать еще стандартно внизу. но что-то он подглючивает иногда

Код:
Private Sub TestProgressBar()
Const Max = 1000
Dim stat As AppStatus, z&
    Set stat = Application.Status
    stat.BeginProgress
    Application.Refresh
    For z = 1 To Max
        stat.Progress = Math.round(z / 10, 0)
        stat.UpdateProgress step = 5
        Application.Refresh
    Next
   stat.EndProgress
End Sub
 
прогресс бар можно сделать еще стандартно внизу. но что-то он подглючивает иногда

Код:
Private Sub TestProgressBar()
Const Max = 1000
Dim stat As AppStatus, z&
    Set stat = Application.Status
    stat.BeginProgress
    Application.Refresh
    For z = 1 To Max
        stat.Progress = Math.round(z / 10, 0)
        stat.UpdateProgress step = 5
        Application.Refresh
    Next
   stat.EndProgress
End Sub
Пробовал в 19й и 21й версии корела. Не отображается вообще. Да и хочется следить за этапами выполнения кода.
 
Последнее редактирование:
Тогда заводите форму прогресса и отображайте процесс выполнения в ней, это по моему вполне логично
 
Тогда заводите форму прогресса и отображайте процесс выполнения в ней, это по моему вполне логично
а как включить вторую форму но при этом чтобы предыдущий макрос не ждал ее закрытия а продолжал выполнение?
 
А разве для выполнения кода обязательно закрытие формы? Это же не модальный мессаджбокс
 
А разве для выполнения кода обязательно закрытие формы? Это же не модальный мессаджбокс
ну если сделать

msgbox 1
frm1.show
msgbox 2

То следующий код не выполняется пока форма не закрыта
 
ЗАчем вам msgbox? Добавляйте инфу прям на форму в поля и обновляйте ее (refresh).
ну инфу то понятно. а код самой задачи.. проверка там файлов или что еще происходит. получается тоже надо в эту форму код выносить?
msgbox просто для проверки
 
ну если сделать

msgbox 1
frm1.show
msgbox 2

То следующий код не выполняется пока форма не закрыта
Ну я ж и говорю, не делайте модальный мессаджбокс, а исполняемый код поставьте в обработчик формы
 
Ну я ж и говорю, не делайте модальный мессаджбокс, а исполняемый код поставьте в обработчик формы
т.е. вы предлагаете в форму прогрессбара (статусбара) впихивать основной код алгоритма?
 
как это сделать из макроса без формы
Разумеется никак - непонятно, куда информацию о процессе выдавать, ну разве что какие нибудь MessageBoxTimeout
или из основной формы.
Тогда в основную форму и код пихать и информацию выводить
 
Разумеется никак - непонятно, куда информацию о процессе выдавать, ну разве что какие нибудь MessageBoxTimeout

Тогда в основную форму и код пихать и информацию выводить
а если сначала запустить форму-статус. из нее запустить основную форму. тогда по идее форма будет висеть. можно просто ее видимостью управлять. (позицией на экране например) и обновлять инфу на ней уже из основной формы. так прокатит?
 
а если сначала запустить форму-статус. из нее запустить основную форму. тогда по идее форма будет висеть. можно просто ее видимостью управлять. (позицией на экране например) и обновлять инфу на ней уже из основной формы. так прокатит?
Конечно. Но зачем формы плодить?
Если так, то можно вообще сделать формочки, всплывающие на, скажем, полсекунды и самоубирающиеся
 
Конечно. Но зачем формы плодить?
Если так, то можно вообще сделать формочки, всплывающие на, скажем, полсекунды и самоубирающиеся
я предложил в качестве варианта именно использования плавающего статуса. мало ли надо носом тыкнуть пользователю что-то
 
Можно и так
 
  • Спасибо
Реакции: DukereD