Да Не Съобщение (Msgbox) - Примери за VBA код

Този урок ще разгледа как да използвате функцията 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.

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave