Excel VBA MsgBox (кутия за съобщения) - Всичко, което трябва да знаете!

В Excel VBA можете да използвате функцията MsgBox за показване на поле за съобщение (както е показано по -долу):

MsgBox не е нищо друго освен диалогов прозорец, който можете да използвате, за да информирате потребителите си, като покажете персонализирано съобщение или получите някои основни данни (като Да/Не или ОК/Отказ).

Докато се показва диалоговият прозорец MsgBox, вашият VBA код е спрян. Трябва да щракнете върху някой от бутоните в MsgBox, за да стартирате останалия VBA код.

Забележка: В този урок ще използвам взаимозаменяемо полето за съобщения с думи и MsgBox. Когато работите с Excel VBA, винаги трябва да използвате MsgBox.

Анатомия на VBA MsgBox в Excel

Кутия за съобщения има следните части:

  1. Заглавие: Това обикновено се използва за показване за какво е полето за съобщение. Ако не посочите нищо, то показва името на приложението - което в този случай е Microsoft Excel.
  2. Бързо: Това е съобщението, което искате да се покаже. Можете да използвате това пространство, за да напишете няколко реда или дори да покажете таблици/данни тук.
  3. Бутони): Докато OK е бутонът по подразбиране, можете да го персонализирате, за да показва бутони като Да/Не, Да/Не/Отказ, Повторен опит/Игнориране и т.н.
  4. Икона за затваряне: Можете да затворите полето със съобщение, като щракнете върху иконата за затваряне.

Синтаксис на функцията VBA MsgBox

Както споменах, MsgBox е функция и има синтаксис, подобен на други VBA функции.

MsgBox (подкана [, бутони] [, заглавие] [, файл за помощ, контекст])

  • подкана - Това е задължителен аргумент. Той показва съобщението, което виждате в MsgBox. В нашия пример текстът „Това е примерен MsgBox“ е „подкана“. Можете да използвате до 1024 знака в подканата и също така да го използвате за показване на стойностите на променливите. В случай, че искате да покажете подкана, която има няколко реда, можете да направите и това (повече за това по -късно в този урок).
  • [бутони] - Той определя кои бутони и икони се показват в MsgBox. Например, ако използвам vbOkOnly, той ще показва само бутона OK, а ако използвам vbOKCancel, ще показва както бутоните OK, така и бутоните за отмяна. Ще разгледам различни видове бутони по -късно в този урок.
  • [заглавие] - Тук можете да посочите какъв надпис искате в диалоговия прозорец на съобщението. Това се показва в заглавната лента на MsgBox. Ако не посочите нищо, то ще покаже името на приложението.
  • [файл за помощ] - Можете да посочите файл за помощ, до който можете да получите достъп, когато потребител кликне върху бутона Помощ. Бутонът за помощ ще се появи само когато използвате кода на бутона за него. Ако използвате помощен файл, трябва също да посочите контекстния аргумент.
  • [контекст] - Това е числов израз, който е контекстният номер на Помощта, присвоен на съответната тема за помощ.

Ако сте нов в концепцията за Msgbox, не се колебайте да игнорирате аргументите [helpfile] и [context]. Рядко съм виждал да се използват такива.

Забележка: Всички аргументи в квадратни скоби са незадължителни. Само аргументът „бърз“ е задължителен.

Константи на бутоните на Excel VBA MsgBox (примери)

В този раздел ще разгледам различните видове бутони, които можете да използвате с VBA MsgBox.

Преди да ви покажа VBA кода за него и как изглежда MsgBox, ето таблица, която изброява всички различни константи на бутони, които можете да използвате.

Константа на бутона Описание
vbOKСамо Показва само бутона OK
vbOKОтказ Показва бутоните OK и Cancel
vbAbortRetryIgnore Показва бутоните за прекъсване, повторен опит и игнориране
vbДаНе Показва бутоните Да и Не
vbДаНеОтказ Показва бутоните Да, Не и Отказ
vbRetryCancel Показва бутоните за повторен опит и отмяна
vbMsgBoxHelpButton Показва бутона Помощ. За да работи това, трябва да използвате помощните и контекстните аргументи във функцията MsgBox
vbDefaultButton1 Прави първия бутон по подразбиране. Можете да промените номера, за да промените бутона по подразбиране. Например vbDefaultButton2 прави втория бутон по подразбиране

Забележка: Докато разглеждате примерите за създаване на различни бутони, може да се чудите какъв е смисълът да имате тези бутони, ако това не оказва влияние върху кода.

Така е! Въз основа на избора можете да кодирате какво искате да прави кодът. Например, ако изберете OK, кодът трябва да продължи и ако щракнете върху Отказ, кодът трябва да спре. Това може да стане чрез използване на променливи и присвояване на стойността на полето за съобщения на променлива. Ще разгледаме това в по -късните раздели на този урок.

Сега нека да разгледаме някои примери за това как различните бутони могат да се показват в MsgBox и как изглежда.

Бутони MsgBox - vbOKOnly (по подразбиране)

Ако използвате само подканата и не посочвате нито един от аргументите, ще получите полето със съобщение по подразбиране, както е показано по -долу:

По -долу е кодът, който ще даде това съобщение:

Sub DefaultMsgBox () MsgBox "Това е примерна кутия" End Sub

Обърнете внимание, че текстовият низ трябва да бъде в двойни кавички.

Можете също да използвате константата на бутона vbOKOnly, но дори и да не посочите нищо, това се приема по подразбиране.

Бутони на MsgBox - OK & Cancel

Ако искате да покажете само OK и бутона Cancel, трябва да използвате константата vbOKCancel.

Sub MsgBoxOKCancel () MsgBox "Искате ли да продължите?", VbOKCancel End Sub

Бутони MsgBox - Прекъсване, Повторен опит и Игнориране

Можете да използвате константата „vbAbortRetryIgnore“, за да покажете бутоните Abort, Retry и Ignore.

Sub MsgBoxAbortRetryIgnore () MsgBox "Какво искате да направите?", VbAbortRetryIgnore End Sub

Бутони MsgBox - Да и Не

Можете да използвате константата „vbYesNo“, за да покажете бутоните Да и Не.

Sub MsgBoxYesNo () MsgBox "Трябва ли да спрем?", VbYesNo End Sub

Бутони MsgBox - Да, Не и Отказ

Можете да използвате константата „vbYesNoCancel“, за да покажете бутоните Да, Не и Отказ.

Sub MsgBoxYesNoCancel () MsgBox "Трябва ли да спрем?", VbYesNoCancel End Sub

Бутони на MsgBox - Опитайте отново и отменете

Можете да използвате константата „vbRetryCancel“, за да покажете бутоните за повторен опит и отмяна.

Sub MsgBoxRetryCancel () MsgBox "Какво искате да направите след това?", VbRetryCancel End Sub

Бутони MsgBox - Бутон за помощ

Можете да използвате константата „vbMsgBoxHelpButton“, за да покажете бутона за помощ. Можете да го използвате с други константи на бутони.

Sub MsgBoxRetryHelp () MsgBox "Какво искате да направите след това?", VbRetryCancel + vbMsgBoxHelpButton End Sub

Имайте предвид, че в този код сме комбинирали две различни константи на бутоните (vbRetryCancel + vbMsgBoxHelpButton). Първата част показва бутоните Повторен опит и Отказ, а втората част показва бутона Помощ.

Бутони MsgBox - Задаване на бутон по подразбиране

Можете да използвате константата „vbDefaultButton1“, за да зададете първия бутон по подразбиране. Това означава, че бутонът е вече избран и ако натиснете enter, той изпълнява този бутон.

По -долу е кодът, който ще зададе втория бутон (бутона „Не“) по подразбиране.

Sub MsgBoxOKCancel () MsgBox "Какво искате да направите по -нататък?", VbYesNoCancel + vbDefaultButton2 End Sub

В повечето случаи крайният ляв бутон е бутонът по подразбиране. Можете да изберете други бутони, като използвате vbDefaultButton2, vbDefaultButton3 и vbDefaultButton4.

Excel VBA MsgBox иконни константи (примери)

Освен бутоните, можете също да персонализирате иконите, които се показват в диалоговия прозорец MsgBox. Например можете да имате червена критична икона или синя информационна икона.

По -долу е дадена таблица, която изброява кода, който ще показва съответната икона.

Икона постоянна Описание
vbCritical Показва иконата за критично съобщение
vb Въпрос Показва иконата на въпроса
vbExclamation Показва иконата на предупредителното съобщение
vbИнформация Показва иконата с информация

Икони на MsgBox - критични

Ако искате да покажете критична икона във вашия MsgBox, използвайте константата vbCritical. Можете да използвате това заедно с други константи на бутони (като поставите знак + между кодовете).

Например по -долу е код, който ще показва бутона OK по подразбиране с критична икона.

Sub MsgBoxCriticalIcon () MsgBox "Това е примерна кутия", vbCritical End Sub

Ако искате да покажете критичната икона с бутони Да и Не, използвайте следния код:

Sub MsgBoxCriticalIcon () MsgBox "Това е примерна кутия", vbYesNo + vbCritical End Sub

Икони на MsgBox - Въпрос

Ако искате да покажете критична икона във вашия MsgBox, използвайте константата vbQuestion.

Sub MsgBoxQuestionIcon () MsgBox "Това е примерна кутия", vbYesNo + vbQuestion End Sub

Икони на MsgBox - Удивление

Ако искате да покажете икона за удивление във вашия MsgBox, използвайте константата vbExclamation.

Sub MsgBoxExclamationIcon () MsgBox "Това е примерна кутия", vbYesNo + vbExclamation End Sub

Икони на MsgBox - Информация

Ако искате да покажете информационна икона във вашия MsgBox, използвайте константата vbInformation.

Sub MsgBoxInformationIcon () MsgBox "Това е примерна кутия", vbYesNo + vbInformation End Sub

Персонализиране на заглавието и подканата в MsgBox

Когато използвате MsgBox, можете да персонализирате заглавието и съобщенията за подкани.

Досега примерът, който видяхме, използва Microsoft Excel като заглавие. В случай, че не посочите аргумента за заглавие, MsgBox автоматично използва заглавието на приложението (което в този случай е Microsoft Excel).

Можете да персонализирате заглавието, като го посочите в кода, както е показано по -долу:

Sub MsgBoxInformationIcon () MsgBox "Искате ли да продължите?", VbYesNo + vbQuestion, "Step 1 of 3" End Sub

По същия начин можете също да персонализирате съобщението за подкана.

Можете също да добавите прекъсвания на редове в съобщението за подкана.

В кода по -долу добавих прекъсване на ред, използвайки „vbNewLine“.

Sub MsgBoxInformationIcon () MsgBox "Искате ли да продължите?" & vbNewLine & "Щракнете върху Да, за да продължите", vbДаНе + vb Въпрос, "Стъпка 1 от 3" Край на под

Можете също така да използвате символа за връщане на каретката - Chr (13) - или прехвърляне на ред - Chr (10), за да вмъкнете нов ред в съобщението за подкана.

Имайте предвид, че можете да добавите нов ред само към съобщението с подкана, но не и към заглавието.

Присвояване на стойност на MsgBox към променлива

Досега видяхме примерите, в които създадохме кутии за съобщения и персонализирахме бутоните, иконите, заглавието и подканата.

Въпреки това, натискането на бутон не е направило нищо.

С функцията MsgBox в Excel можете да решите какво искате да направите, когато потребител кликне върху определен бутон. И това е възможно, тъй като всеки бутон има свързана стойност.

Така че, ако щракна върху бутона Да, функцията MsgBox връща стойност (6 или константата vbYes), която мога да използвам в кода си. По същия начин, ако потребителят избере бутона „Не“, той връща различна стойност ((7 или константата vbNo)), която мога да използвам в кода.

По -долу е дадена таблица, която показва точните стойности и константата, върната от функцията MsgBox. Не е нужно да ги запомняте, просто го имайте предвид и можете да използвате по -лесни за използване константи.

Натиснат бутон Постоянен Стойност
Добре vbOk 1
Отказ vbCancel 2
Прекъсване vbAbort 3
Опитайте отново vbRetry 4
Игнорирай vbIgnore 5
Да vbДа 6
Не vbNo 7

Сега нека видим как можем да контролираме кода на макроса VBA въз основа на кой бутон кликва потребителят.

В кода по -долу, ако потребителят кликне върху „Да“, той показва съобщението „Вие сте кликнали с Да“, а ако кликне върху „Не“, се показва „Щракнахте върху„ Не “.

Sub MsgBoxInformationIcon () Резултат = MsgBox ("Искате ли да продължите?", VbYesNo + vbQuestion) Ако Резултат = vbYes Тогава MsgBox "Щракнахте Да" Иначе: MsgBox "Щракнахте Не" Край, ако прекратите Sub

В горния код съм присвоил стойността на функцията MsgBox на променливата Result. Когато щракнете върху бутона Да, променливата Резултат получава константата vbYes (или числото 6) и когато щракнете върху Не, променливата Резултат получава константата vbNo (или числото 7).

След това използвах конструкция If Then Else, за да проверя дали променливата Result съдържа стойността vbYes. Ако това се случи, той показва подканата „Кликнахте Да“, в противен случай показва „Щракнахте Не“.

Можете да използвате същата концепция, за да стартирате код, ако потребителят кликне върху Да и излезе от подводницата, когато кликне върху Не.

Забележка: Когато присвоявате изхода MsgBox на променлива, трябва да поставите аргументите на функцията MsgBox в скоби. Например в реда Резултат = MsgBox („Искате ли да продължите?“, VbДаНе + vbQuestion), можете да видите, че аргументите са в скоби.

Ако искате да се задълбочите допълнително във функцията Message Box, ето официалния документ за нея.

Може да харесате и следните уроци по Excel VBA:

  • Функция Excel VBA Split.
  • Excel VBA InStr функция.
  • Работа с клетки и диапазони в Excel VBA.
  • Работа с работни листове във VBA.
  • Работа с работни книги във VBA.
  • Използване на цикли в Excel VBA.
  • Разбиране на типовете данни на Excel VBA (променливи и константи)
  • Как да създадете и използвате лична работна книга за макроси в Excel.
  • Полезни примери за макро кодове на Excel.
  • Използване за For Next Loop в Excel VBA.
  • Събития на Excel VBA - Лесно (и пълно) ръководство.
  • Как да стартирате макрос в Excel-Пълно ръководство стъпка по стъпка.
  • Как да създадете и използвате добавка в Excel.

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

wave wave wave wave wave