MsgBox Excel VBA (вікно повідомлень) - все, що вам потрібно знати!

У Excel VBA ви можете використовувати функцію MsgBox для відображення вікна повідомлення (як показано нижче):

MsgBox - це не що інше, як діалогове вікно, за допомогою якого ви можете інформувати своїх користувачів, показуючи власне повідомлення або отримуючи деякі основні вхідні дані (наприклад, Так/Ні або OK/Скасувати).

Поки відображається діалогове вікно 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, на ньому відображатиметься лише кнопка ОК, а якщо я використовую vbOKCancel, на ньому будуть відображатися обидві кнопки ОК і Скасувати. Далі в цьому підручнику я розгляну різні типи кнопок.
  • [назва] - Тут ви можете вказати, які підписи ви хочете у діалоговому вікні повідомлення. Це відображається у рядку заголовка MsgBox. Якщо ви нічого не вказуєте, у ньому відображатиметься назва програми.
  • [файл допомоги] - Ви можете вказати файл довідки, до якого можна отримати доступ, коли користувач натисне кнопку Довідка. Кнопка довідки з'являється лише тоді, коли ви використовуєте для неї код кнопки. Якщо ви використовуєте файл довідки, вам також потрібно вказати контекстний аргумент.
  • [контекст] - Це числовий вираз, який є контекстним номером довідки, призначеним для відповідної теми довідки.

Якщо ви новачок у концепції Msgbox, не ігноруйте аргументи [файл допомоги] та [контекст]. Я рідко бачив, як вони використовуються.

Примітка: Усі аргументи в квадратних дужках є необов’язковими. Обов’язковим є лише аргумент «оперативний».

Константи кнопок MsgBox Excel VBA (приклади)

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

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

Постійна кнопка Опис
vbOKТільки Показує лише кнопку OK
vbOKСкасувати Показує кнопки ОК і Скасувати
vbAbortRetryIgnore Показує кнопки «Скасувати», «Повторити» та «Ігнорувати»
vbТак Відображає кнопки Так і Ні
vbТакНе Скасувати Показує кнопки Так, Ні та Скасувати
vbRetryCancel Показує кнопки Повторити спробу та Скасувати
vbMsgBoxHelpButton Показує кнопку Довідка. Щоб це працювало, вам потрібно скористатися аргументами довідки та контексту у функції MsgBox
vbDefaultButton1 Робить першу кнопку стандартною. Ви можете змінити номер, щоб змінити кнопку за замовчуванням. Наприклад, vbDefaultButton2 робить другу кнопку стандартною

Примітка: Переглядаючи приклади створення різних кнопок, ви можете задуматись, який сенс мати ці кнопки, якщо це не впливає на код.

Це робить! Виходячи з вибраного, ви можете кодувати, що потрібно зробити з кодом. Наприклад, якщо вибрати «OK», код має продовжитися, а якщо натиснути «Скасувати», код повинен зупинитися. Це можна зробити, використовуючи змінні та присвоюючи змінній значення Поле повідомлень. Ми розглянемо це в наступних розділах цього підручника.

Тепер давайте подивимося на деякі приклади того, як різні кнопки можуть відображатися в MsgBox і як це виглядає.

Кнопки MsgBox - vbOKOnly (за замовчуванням)

Якщо ви використовуєте лише запит і не вказуєте жодного з аргументів, ви отримаєте вікно повідомлення за умовчанням, як показано нижче:

Нижче наведено код, який видасть це вікно повідомлення:

Sub DefaultMsgBox () MsgBox "Це зразок вікна" End Sub

Зауважте, що текстовий рядок має бути у подвійних лапках.

Ви також можете використовувати константу кнопки vbOKOnly, але навіть якщо ви нічого не вказуєте, вона приймається за замовчуванням.

Кнопки MsgBox - OK і Скасувати

Якщо ви хочете лише показати ОК і кнопку Скасувати, вам потрібно використовувати константу vbOKCancel.

Sub MsgBoxOKCancel () MsgBox "Хочете продовжити?", VbOKCancel End Sub

Кнопки MsgBox - скасувати, повторити спробу та проігнорувати

Ви можете використовувати константу ‘vbAbortRetryIgnore’, щоб показати кнопки Abort, Retry та Ignore.

Sub MsgBoxAbortRetryIgnore () MsgBox "Що ви хочете зробити?", VbAbortRetryIgnore End Sub

Кнопки MsgBox - так і ні

Ви можете використовувати константу "vbYesNo", щоб показати кнопки "Так" і "Ні".

Sub MsgBoxТакНі () MsgBox "Чи варто зупинитися?", VbДа

Кнопки 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 "Що ви хочете зробити далі?", VbТакNoCancel + vbDefaultButton2 End Sub

У більшості випадків крайня ліва кнопка є кнопкою за замовчуванням. Ви можете вибрати інші кнопки за допомогою vbDefaultButton2, vbDefaultButton3 та vbDefaultButton4.

Константи піктограм Excel VBA MsgBox (приклади)

Крім кнопок, ви також можете налаштувати значки, які відображаються у діалоговому вікні MsgBox. Наприклад, ви можете мати червоний критичний значок або синій значок інформації.

Нижче наведено таблицю, в якій перелічено код, який буде відображати відповідний значок.

Значок Константа Опис
vbCritical Показує піктограму критичного повідомлення
vbQuestion Показує значок питання
vbEcclamation Показує значок попереджувального повідомлення
vbІнформація Показує значок інформації

Значки MsgBox - критично важливі

Якщо ви хочете показати критичний значок у своєму MsgBox, використовуйте константу vbCritical. Ви можете використовувати це разом з іншими константами кнопок (поставивши знак + між кодами).

Наприклад, нижче наведено код, який покаже кнопку ОК за замовчуванням з критичним значком.

Sub MsgBoxCriticalIcon () MsgBox "Це зразок", vbCritical End Sub

Якщо ви хочете показати критичний значок за допомогою кнопок Так і Ні, скористайтеся таким кодом:

Sub MsgBoxCriticalIcon () MsgBox "Це зразок", vbТак

Значки MsgBox - питання

Якщо ви хочете показати критичний значок у своєму MsgBox, використовуйте константу vbQuestion.

Sub MsgBoxQuestionIcon () MsgBox "Це зразок", vbТак

Значки MsgBox - вигук

Якщо ви хочете показати значок вигуку у своєму MsgBox, використовуйте константу vbExclamation.

Sub MsgBoxExclamationIcon () MsgBox "Це зразок", vbТак

Значки MsgBox - інформація

Якщо ви хочете показати значок інформації у своєму MsgBox, використовуйте константу vbInformation.

Sub MsgBoxInformationIcon () MsgBox "Це зразок", vbТакНі + vbІнформація Кінець Sub

Налаштування заголовка та підказки в MsgBox

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

Поки що в наведеному прикладі ми використовували Microsoft Excel як заголовок. Якщо ви не вказуєте аргумент заголовка, MsgBox автоматично використовує заголовок програми (яким у даному випадку був Microsoft Excel).

Ви можете налаштувати заголовок, вказавши його у коді, як показано нижче:

Sub MsgBoxInformationIcon () MsgBox "Ви хочете продовжити?", VbYesNo + vbQuestion, "Крок 1 з 3" Закінчити підрозділ

Так само ви можете налаштувати повідомлення -запит.

Ви також можете додати розриви рядків у сповіщенні.

У наведеному нижче коді я додав розрив рядка за допомогою "vbNewLine".

Sub MsgBoxInformationIcon () MsgBox "Продовжити?" & vbNewLine & "Натисніть Так, щоб продовжити", vbТакНі + vbQuestion, "Крок 1 з 3" Завершити підрозділ

Ви також можете використовувати символ повернення каретки - Chr (13) - або подачу рядка - Chr (10), щоб вставити новий рядок у повідомлення із запитом.

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

Присвоєння значення MsgBox змінній

Поки що ми бачили приклади, коли ми створювали вікна повідомлень та налаштовували кнопки, значки, заголовок та підказку.

Однак натискання кнопки нічого не дало.

За допомогою функції MsgBox в Excel ви можете вирішити, що ви хочете робити, коли користувач натискає певну кнопку. І це можливо, оскільки кожна кнопка має відповідне значення.

Тож якщо я натискаю кнопку Так, функція MsgBox повертає значення (6 або постійне vbТак), яке я можу використовувати у своєму коді. Аналогічно, якщо користувач вибирає кнопку «Ні», він повертає інше значення ((7 або константу vbNo)), яке я можу використовувати у коді.

Нижче наведено таблицю, яка показує точні значення та константу, повернену функцією MsgBox. Вам не потрібно запам’ятовувати це, просто знайте про це, і ви можете використовувати простіші у використанні константи.

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

Тепер давайте подивимося, як ми можемо керувати кодом макросу VBA на основі того, яку кнопку натискає користувач.

У нижченаведеному коді, якщо користувач натискає Так, відображається повідомлення «Ви натиснули Так», а якщо користувач натискає Ні, відображається: «Ви натиснули Ні».

Sub MsgBoxInformationIcon () Результат = MsgBox ("Ви хочете продовжити?", VbYesNo + vbQuestion) Якщо Результат = vbТак

У наведеному вище коді я призначив значення функції MsgBox змінній Result. Коли ви натискаєте кнопку Так, змінна Результат отримує константу vbYes (або число 6), а коли ви натискаєте Ні, змінна Результат отримує константу vbNo (або число 7).

Тоді я використав конструкцію If Then Else, щоб перевірити, чи змінна Result містить значення vbYes. Якщо це так, він відображає запит «Ви натиснули Так», інакше - «Ви натиснули Ні».

Ви можете використовувати ту саму концепцію для запуску коду, якщо користувач натискає "Так" і виходить з підрозділу, коли натискає "Ні".

Примітка: Коли ви призначаєте вивід MsgBox змінній, потрібно помістити аргументи функції MsgBox у дужки. Наприклад, у рядку Результат = MsgBox ("Ви хочете продовжити?", VbТак Ні + vbQuestion), ви можете побачити, що аргументи знаходяться в дужках.

Якщо ви хочете більше заглибитися у функцію вікна повідомлень, ось офіційний документ про неї.

Вам також можуть сподобатися такі підручники 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