Так Ні Окно повідомлень (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 і, нарешті, розглянемо інші приклади вікон повідомлень.

Параметри вікна повідомлень VBA

Подивіться на зображення нижче. Тут ви побачите (майже) усі варіанти, доступні вам під час створення вікон повідомлень. Зверніть увагу на значки та різні кнопки.

Це знімок екрана “MessageBox Builder” з нашої надбудови Premium VBA: AutoMacro. Конструктор MessageBox дозволяє швидко розробити потрібну скриньку повідомлень і вставити код у модуль коду. Він також містить багато інших конструкторів коду, велику бібліотеку кодів VBA та різноманітні засоби кодування. Це обов’язкова умова будь-якого розробника VBA.

Синтаксис функції MsgBox

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

підказка (обов'язково) - Це основний текст вікна повідомлення.

кнопки - Виберіть, які кнопки відображати. Якщо пропущено, "ОК". Тут ви також можете вказати, який значок відображати, і кнопку за замовчуванням.

титул - Заголовок у верхній частині вікна повідомлення. Якщо його не вказано, відображається назва поточної програми (наприклад, Microsoft Excel).

файл довідки - Вкажіть файл довідки, до якого можна отримати доступ, коли користувач натисне кнопку «Довідка». Якщо вказано, ви також повинні додати контекст (нижче)

контекст - Числовий вираз, що представляє номер контексту довідки, призначений для відповідної теми довідки.

Ви, ймовірно, можете ігнорувати файл довідки та аргументи контексту. Я ніколи не бачив їх у використанні.

Налаштуйте назву та сповіщення вікна повідомлень

Функція MsgBox дозволяє вам налаштувати заголовок та повідомлення із запитами так:

1 Повідомлення "Підказка" ,, "Назва"

Інший приклад:

123 Sub MsgBoxPromptTitle ()MsgBox "Крок 1 завершено. Натисніть OK, щоб запустити крок 2." ,, "Крок 1 з 5"End Sub

Важливо! Ви повинні пам’ятати, що оточуєте текст цитатами.

Порушення рядків MessageBox

Ви також можете додати розриви рядків до запитів у вікні повідомлень за допомогою "vbNewLine".

123 Sub MsgBoxPromptTitle_NewLine ()MsgBox "Крок 1 завершено". & vbNewLine & "Натисніть OK, щоб запустити крок 2.", "Крок 1 з 5"End Sub

Зверніть увагу, що ми використовуємо символ & для об’єднання тексту. Ви можете дізнатися більше про використання & з текстом та інші варіанти вставлення розривів рядків у нашій статті про приєднання тексту.

Значки MsgBox

VBA дає вам можливість додати одну з чотирьох попередньо вбудованих піктограм у ваші скриньки повідомлень:

Значок Константа Значок
vbІнформація
vbCritical
vbQuestion
vbEcclamation

Константа Icon повинна бути розміщена в аргументі кнопки:

123 Sub MsgBoxQuestionIcon ()MsgBox "Приклад запитання", vbQuestionEnd Sub

Це створить стандартне вікно повідомлення "OK" з піктограмою питання:

Зверніть увагу, як під час набору тексту редактор VBA покаже вам доступні для вас параметри:

Це корисно, оскільки вам не потрібно пам’ятати точний синтаксис чи назви піктограм чи кнопок.

Тепер ми демонструємо кожен значок вікна повідомлення:

Значки 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 / Скасувати, Так / Ні тощо.

У цьому випадку вам буде потрібно виконувати різні дії, залежно від того, яка кнопка натиснута. Розглянемо приклад.

Ось вікно повідомлень, яке ми будемо генерувати:

Це весь код (далі ми його розберемо):

123456789101112 Sub MsgBoxVariable ()Нечітка відповідь Як ціле числоanswer = MsgBox ("Хочете продовжити?", vbQuestion + vbТак)Якщо відповідь = vbТакПовідомлення "Так"ІнакшеПовідомлення "Ні"Закінчити ЯкщоEnd Sub

Спочатку ми призначаємо вихідний ящик повідомлень цілочисельній змінній.

123 Нечітка відповідь Як ціле числоanswer = MsgBox ("Хочете продовжити?", vbQuestion + vbТак)

Далі ми використовуємо If-Else, щоб визначити, що робити на основі натискання кнопки:

12345 Якщо відповідь = vbТакПовідомлення "Так"ІнакшеПовідомлення "Ні"Закінчити Якщо

Функція MsgBox повертає ціле число (між 1-7), тому ми визначаємо змінну як цілочисельний тип. Однак, замість посилання на ціле число, ви можете посилатися на константу (наприклад, vbOK, vbCancel тощо). Подивіться на цю таблицю, щоб побачити всі варіанти:

Кнопка Постійна Цінність
в порядку vbOK 1
Скасувати vbCancel 2
Скасувати vbAbort 3
Повторіть спробу vbRetry 4
Ігнорувати vbIgnore 5
Так vbТак 6
Немає vbНі 7

Тепер ми демонструємо кожну групу кнопок:

Окно повідомлень ОК - vbOKТільки

Це стандартна скринька повідомлень VBA.

123456 Sub MsgBox_OKOnly ()Нечітка відповідь Як ціле числоanswer = MsgBox ("Приклад OKOnly", vbOKOnly)End Sub

OK Скасувати вікно повідомлень - vbOKСкасувати

123456789101112 Sub MsgBox_OKCancel ()Нечітка відповідь Як ціле числоanswer = MsgBox ("OK Скасувати приклад", vbOKCancel)Якщо відповідь = vbOK ТодіПовідомлення "OK"ІнакшеПовідомлення "Скасувати"Закінчити ЯкщоEnd Sub

Так Ні Окно повідомлень - vbТак

123456789101112 Sub MsgBox_Так Ні ()Нечітка відповідь Як ціле числоanswer = MsgBox ("Так Ні Приклад", vbYesNo)Якщо відповідь = vbТакПовідомлення "Так"ІнакшеПовідомлення "Ні"Закінчити ЯкщоEnd Sub

Так Ні Скасувати вікно повідомлень - vbТакНі Скасувати

1234567891011121314 Sub MsgBox_ТакНі Скасувати ()Нечітка відповідь Як ціле числоanswer = MsgBox ("Так Ні Скасувати Приклад", vbYesNoCancel)Якщо відповідь = vbТакПовідомлення "Так"В іншому випадку, якщо відповідь = vbNo ТодіПовідомлення "Ні"ІнакшеПовідомлення "Скасувати"Закінчити ЯкщоEnd Sub

Вікно повідомлень «Ігнорувати повторне скасування» - vbAbortRetryIgnore

1234567891011121314 Sub MsgBox_AbortRetryIgnore ()Нечітка відповідь Як ціле числоanswer = MsgBox ("Приклад ігнорування повторного спроби скасувати", vbAbortRetryIgnore)Якщо відповідь = vbAbort ТодіПовідомлення "Перервати"В іншому випадку answer = vbRetry ТодіПовідомлення "Повторити"ІнакшеMsgBox "Ігнорувати"Закінчити ЯкщоEnd Sub

Повторити спробу скасувати вікно повідомлень - vbRetryCancel

123456789101112 Sub MsgBox_RetryCancel ()Нечітка відповідь Як ціле числоanswer = MsgBox ("Приклад повторного скасування", vbRetryCancel)Якщо відповідь = vbПовторіть тодіПовідомлення "Повторити"ІнакшеПовідомлення "Скасувати"Закінчити ЯкщоEnd Sub

Приклади MessageBox VBA

Підтвердження вікна повідомлень перед запуском макросу

У цьому коді перед викликом макросу відображатиметься вікно повідомлення Так Ні. Якщо натиснути Так, викликається макрос, якщо натиснути Ні, макрос не запускається.

12345678 Sub Msgbox_BeforeRunning ()Нечітка відповідь Як ціле числоanswer = MsgBox ("Ви хочете запустити Macro1?", vbQuestion + vbТак Ні)Якщо відповідь = vbТак, викличте макрос1End Sub

Так / Ні Поле повідомлень - Вийти з підп

Тут ми підтвердимо з користувачем, чи продовжувати запуск макросу. Якщо натиснути Ні, код вийде з підрозділу, інакше процедура продовжиться.

12345678910 Sub Msgbox_BeforeRunning ()Нечітка відповідь Як ціле числоanswer = MsgBox ("Хочете продовжити?", vbQuestion + vbТак)Якщо відповідь = vbNo, то вийдіть із суб"Якийсь кодексEnd Sub

Вікно повідомлень VBA у Access VBA

Усі наведені вище приклади працюють точно так само в Access VBA, як і в Excel VBA.

Ви допоможете розвитку сайту, поділившись сторінкою з друзями

wave wave wave wave wave