Мне нужно отобразить сообщение пользователю. Когда я делаю это с помощью 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 принадлежит мне, конечно, используйте соответствующее имя для созданной вами формы.
Ответ 6
Вы можете использовать метод всплывающего окна WScript. Здесь полная информация, включая пример кода: http://msdn.microsoft.com/en-us/library/x83z1d9f%28v=vs.85%29.aspx
Ответ 7
Я считаю, что вам сначала нужно оценить, действительно ли вам нужно всплывающее сообщение msgbox и сохранить код.
Функциональность msgbox (как уже говорилось) является модальной, и вы не можете ее обходить. Однако вы можете создать форму (похожую на msgbox), установить эту форму как "не модальный" и вызвать код для отображения этой формы. Рабочий процесс кода продолжается. Протестировано и работает в Excel.
Обновление: мой доступ потерял ссылку, я не смогу проверить его сейчас. Надеюсь, он работает и в Access.
Rgds