Този урок ще разгледа как да използвате функцията VBA MsgBox за показване на кутии със съобщения до потребителите (включително кутия за съобщения YesNo). Може да се интересувате и от нашата статия за InputBoxes.
Функция VBA MsgBox
Във VBA е лесно да се покаже прост MsgBox:
1 | MsgBox "Това е поле за съобщения" |
Можете обаче да направите много повече от това да покажете обикновена кутия за съобщения OK. Нека бързо разгледаме сложния пример, преди да се потопим в подробностите …
VBA Да Не Кутия за съобщения
По -долу ще създадем поле за съобщение с:
- Заглавие „Заглавие на полето за съобщения“ и подкана „Текст“
- Икона на въпросителен знак
- Да / Не опции вместо просто „OK“
- Бутон по подразбиране = „Не“
123 | Затъмнен отговор Като цяло числоanswer = MsgBox ("Текст", vbQuestion + vbДа Не + vbDefaultButton2, "Заглавие на полето за съобщения") |
Пощенската кутия ще върне vbYes или vbNo в зависимост от избора на потребителя. След това можете да извършвате различни действия въз основа на избора:
12345 | Ако отговор = vbДа ТогаваMsgBox "Да"ИначеMsgBox "Не"Край Ако |
В следващия раздел ще ви покажем всички налични опции при създаването на кутии за съобщения. След това ще ви запознаем със синтаксиса на функцията MsgBox и накрая ще разгледаме други примери за кутия за съобщения.
Опции за кутия за съобщения VBA
Разгледайте изображението по -долу. Тук ще видите (почти) всички налични опции при създаването на кутии за съобщения. Обърнете внимание на иконите и различните бутони.
Това е екранна снимка на „MessageBox Builder“ от нашата добавка Premium VBA: AutoMacro. Създателят на MessageBox ви позволява бързо да проектирате желаната от вас кутия за съобщения и да вмъкнете кода във вашия кодов модул. Той също така съдържа много други конструктори на кодове, обширна библиотека с VBA код и асортимент от инструменти за кодиране. Това е задължително за всеки VBA разработчик.
Синтаксис на функцията MsgBox
MsgBox (подкана [, бутони] [, заглавие] [, файл за помощ, контекст])
подкана (задължително) - Това е основният текст на полето за съобщения.
бутони - Изберете кои бутони да се показват. Ако е пропуснато, „ОК само“. Тук можете също да посочите каква икона да се показва и бутона по подразбиране.
заглавие - Заглавието в горната част на полето за съобщение. Ако е пропуснато, се показва името на текущото приложение (напр. Microsoft Excel).
файл за помощ - Посочете помощния файл, който може да бъде достъпен, когато потребителят кликне върху бутона „Помощ“. Ако е посочено, трябва да добавите и контекст (по -долу)
контекст - Числов израз, представляващ номера на контекста на помощта, присвоен на съответната тема за помощ.
Вероятно можете да пренебрегнете помощния файл и контекстните аргументи. Никога не съм виждал да се използват.
Персонализирайте заглавието и подканата на полето за съобщения
Функцията MsgBox ви позволява да персонализирате заглавието и подканите съобщения така:
1 | Msgbox "Подкани" ,, "Заглавие" |
Друг пример:
123 | Sub MsgBoxPromptTitle ()MsgBox "Стъпка 1 завършена. Щракнете върху OK, за да изпълните стъпка 2." ,, "Стъпка 1 от 5"End Sub |
Важно! Не забравяйте да заобиколите текста си с цитати.
MessageBox LineBreaks
Можете също така да добавите прекъсвания на редове към подканите на полето за съобщения с „vbNewLine“.
123 | Под MsgBoxPromptTitle_NewLine ()MsgBox "Стъпка 1 завършена." & vbNewLine & "Щракнете върху OK, за да изпълните стъпка 2.", "Стъпка 1 от 5"End Sub |
Забележете, че използваме символа & за свързване на текст заедно. Можете да научите повече за използването на & с текст и други опции за вмъкване на редове в нашата статия за присъединяване на текст.
Икони на MsgBox
VBA ви дава възможност да добавите една от четирите предварително изградени икони към вашите кутии за съобщения:
Икона постоянна | Икона |
---|---|
vbИнформация | |
vbCritical | |
vb Въпрос | |
vbExclamation |
Константата Icon трябва да бъде поставена в аргумента на бутона:
123 | Sub MsgBoxQuestionIcon ()MsgBox "Пример за въпрос", vbQuestionEnd Sub |
Това ще генерира стандартното поле за съобщение „OK“ с иконата Въпрос:
Забележете как, когато пишете, VBA Editor ще ви покаже наличните опции:
Това е полезно, защото не е нужно да помните точния синтаксис или имената на икони или бутони.
Сега ще демонстрираме всяка икона на полето за съобщения:
Икони на MsgBox - Информация
123 | Sub MsgBoxInformationIcon ()MsgBox "Пример за информация", vbInformationEnd Sub |
Икони на MsgBox - критични
123 | Sub MsgBoxCriticalIcon ()MsgBox "Критичен пример", vbCriticalEnd Sub |
Икони на MsgBox - Въпрос
123 | Sub MsgBoxQuestionIcon ()MsgBox "Пример за въпрос", vbQuestionEnd Sub |
Икони на MsgBox - Удивление
123 | Sub MsgBoxExclamationIcon ()MsgBox "Пример за възклицание", vbExclamationEnd Sub |
По -долу ще говорим за генериране на кутии за съобщения с различни оформления на бутони. Ако все пак изберете различен тип кутия за съобщения, ще трябва да добавите типа икона след бутоните с помощта на „+“:
123 | Sub MsgBoxQuestionIcon ()MsgBox "Искате ли да продължите?", VbOKCancel + vbQuestionEnd Sub |
Променливи на MsgBox
Досега сме работили предимно с полето за съобщения „OK“ по подразбиране. Полето за съобщение OK има само една опция: Натискането на „OK“ позволява кода да продължи. Можете обаче да посочите и други групиране на бутони: OK / Cancel, Yes / No и т.н.
В този случай ще искате да извършите различни действия въз основа на кой бутон е натиснат. Нека разгледаме един пример.
Ето полето за съобщение, което ще генерираме:
Това е целият код (по -нататък ще го разбием):
123456789101112 | Sub MsgBoxVariable ()Затъмнен отговор Като цяло числоanswer = MsgBox ("Искате ли да продължите?", vbQuestion + vbДа Не)Ако отговор = vbДа ТогаваMsgBox "Да"ИначеMsgBox "Не"Край АкоEnd Sub |
Първо присвояваме изхода на кутията за съобщения към целочислена променлива.
123 | Затъмнен отговор Като цяло числоanswer = MsgBox ("Искате ли да продължите?", vbQuestion + vbДа Не) |
След това използваме If-Else, за да определим какво да правим въз основа на кой бутон е натиснат:
12345 | Ако отговор = vbДа ТогаваMsgBox "Да"ИначеMsgBox "Не"Край Ако |
Функцията MsgBox връща цяло число (между 1-7), така че определяме променливата като цяло число. Въпреки това, вместо да се позовавате на цяло число, можете да се позовавате на константа (напр. VbOK, vbCancel и т.н.). Погледнете тази таблица, за да видите всички опции:
Бутон | Постоянен | Стойност |
---|---|---|
Добре | vbOK | 1 |
Отказ | vbCancel | 2 |
Прекъсване | vbAbort | 3 |
Опитайте отново | vbRetry | 4 |
Игнорирай | vbIgnore | 5 |
Да | vbДа | 6 |
Не | vbNo | 7 |
Сега ще демонстрираме всяко групиране на бутони:
OK Message Box - vbOKOnly
Това е стандартната кутия за съобщения VBA.
123456 | Sub MsgBox_OKOnly ()Затъмнен отговор Като цяло числоanswer = MsgBox ("Пример само за OK", vbOKOnly)End Sub |
OK Отказ на полето за съобщения - vbOKCancel
123456789101112 | Sub MsgBox_OKCancel ()Затъмнен отговор Като цяло числоanswer = MsgBox ("OK Cancel Example", vbOKCancel)Ако отговор = vbOK ТогаваMsgBox "OK"ИначеMsgBox "Отказ"Край АкоEnd Sub |
Да Не Съобщение - vbДаНе
123456789101112 | Под MsgBox_Да Не ()Затъмнен отговор Като цяло числоanswer = MsgBox ("Да Не Пример", vbYesNo)Ако отговор = vbДа ТогаваMsgBox "Да"ИначеMsgBox "Не"Край АкоEnd Sub |
Да Не Отказ на полето за съобщения - vbДаНеОтказ
1234567891011121314 | Sub MsgBox_YesNoCancel ()Затъмнен отговор Като цяло числоanswer = MsgBox ("Да Не Пример за отмяна", vbYesNoCancel)Ако отговор = vbДа ТогаваMsgBox "Да"В противен случай ако отговор = vbNo ТогаваMsgBox "Не"ИначеMsgBox "Отказ"Край АкоEnd Sub |
Прекъсване на повторното игнориране на полето за съобщения - vbAbortRetryIgnore
1234567891011121314 | Sub MsgBox_AbortRetryIgnore ()Затъмнен отговор Като цяло числоanswer = MsgBox ("Пример за игнориране на повторен опит за прекъсване", vbAbortRetryIgnore)Ако отговор = vbAbort ТогаваMsgBox "Прекъсване"ElseIf answer = vbRetry ТогаваMsgBox „Повторен опит“ИначеMsgBox „Игнориране“Край АкоEnd Sub |
Повторен опит за отмяна на кутия за съобщения - vbRetryCancel
123456789101112 | Sub MsgBox_RetryCancel ()Затъмнен отговор Като цяло числоanswer = MsgBox ("Пример за повторен опит за отмяна", vbRetryCancel)Ако отговор = vbПопитайте отновоMsgBox „Повторен опит“ИначеMsgBox "Отказ"Край АкоEnd Sub |
Примери за VBA MessageBox
Потвърждение на полето за съобщения преди стартиране на макрос
Този код ще покаже поле за съобщение Да Не, преди да извика макрос. Ако се щракне върху Да, макросът се извиква, ако се щракне върху Не, макросът не се изпълнява.
12345678 | Sub Msgbox_BeforeRunning ()Затъмнен отговор Като цяло числоanswer = MsgBox ("Искате ли да стартирате Macro1?", vbQuestion + vbДа Не)Ако отговор = vbДа След това се обадете на макрос1End Sub |
Да / Не Съобщение - Излезте от под
Тук ще потвърдим с потребителя дали да продължи да изпълнява макрос. Ако се щракне върху „Не“, кодът ще излезе от подсистемата, в противен случай процедурата ще продължи.
12345678910 | Sub Msgbox_BeforeRunning ()Затъмнен отговор Като цяло числоanswer = MsgBox ("Искате ли да продължите?", vbQuestion + vbДа Не)Ако отговор = vbNo След това излезте от Sub- Някакъв кодексEnd Sub |
Кутия за съобщения VBA в Access VBA
Всички горепосочени примери работят абсолютно същото в Access VBA като в Excel VBA.