Использование MsgBox без приостановки приложения

Мне нужно отобразить сообщение пользователю. Когда я делаю это с помощью MsgBox, программа останавливается, пока пользователь не закроет окно. Я хотел бы знать, есть ли способ открыть MsgBox без приостановки программы.

Ответ 1

Похоже, вы не ожидаете ввода пользователем из MsgBox. В этом случае, в зависимости от вашего приложения, StatusBar может быть адекватной заменой.

В Excel это легко:

Application.StatusBar = "Please be patient..."
Application.StatusBar = iDone & " of " & iTotal & " items done."

Чтобы очистить StatusBar, когда это делается:

Application.StatusBar = False

В Access синтаксис немного сложнее:

Temp = SysCmd(acSysCmdSetStatus, "Hey, look at me!") ' Puts out your message
Temp = SysCmd(acSysCmdClearStatus) ' Clears StatusBar

Ответ 2

Насколько я когда-либо мог обнаружить, ответ заключается в том, что вы не можете. Обход - это настраиваемая форма, которая служит диалоговым окном.

См. http://www.mvps.org/access/forms/frm0046.htm (не совсем ваш вопрос, но применимый).

Ответ 3

MsgBox является модальным (это означает, что окно появляется и останавливает выполнение кода до тех пор, пока оно не будет очищено). Как отмечали другие плакаты/комментаторы - ваша альтернатива заключается в том, чтобы написать собственную версию всплывающего окна, которое не является модальным. Не стоит прилагать усилий, если вам это действительно не нужно.

Ответ 4

Создайте форму вместо этого. Я создал небольшую форму, в которой есть только текстовое поле с надписью "Работа, пожалуйста, подождите". Когда это необходимо, я открываю форму как всплывающее окно (имя формы формы docmd openform), как правило, перед началом какой-либо операции, которая займет некоторое время. Когда работа завершается, я закрываю форму (docmd close acform "имя формы" ). Это не останавливает программу, но предоставляет пользователю "сообщение".

Ответ 5

В редакторе VB: выберите Вставить меню UserForm. В панели инструментов выберите TextBox: перетащите прямоугольник в UserForm и введите текст в него. Щелкните правой кнопкой мыши на UserForm и выберите "Свойства". В свойстве ShowModal: выберите False. В вашем модуле VBA введите UserForm1.Show, где вы хотите включить его, и UserForm1.Hide, где вы хотите отключить его. UserForm1 принадлежит мне, конечно, используйте соответствующее имя для созданной вами формы.

Ответ 7

Я считаю, что вам сначала нужно оценить, действительно ли вам нужно всплывающее сообщение msgbox и сохранить код.

Функциональность msgbox (как уже говорилось) является модальной, и вы не можете ее обходить. Однако вы можете создать форму (похожую на msgbox), установить эту форму как "не модальный" и вызвать код для отображения этой формы. Рабочий процесс кода продолжается. Протестировано и работает в Excel.

Обновление: мой доступ потерял ссылку, я не смогу проверить его сейчас. Надеюсь, он работает и в Access.

Rgds