У Excel VBA ви можете використовувати функцію MsgBox для відображення вікна повідомлення (як показано нижче):
MsgBox - це не що інше, як діалогове вікно, за допомогою якого ви можете інформувати своїх користувачів, показуючи власне повідомлення або отримуючи деякі основні вхідні дані (наприклад, Так/Ні або OK/Скасувати).
Поки відображається діалогове вікно MsgBox, ваш код VBA зупиняється. Вам потрібно натиснути будь -яку кнопку в MsgBox, щоб запустити код VBA, що залишився.
Примітка: У цьому підручнику я буду використовувати слова «поле повідомлення» та MsgBox як взаємозамінні. Під час роботи з Excel VBA завжди потрібно використовувати MsgBox.Анатомія VBA MsgBox в Excel
Вікно повідомлення містить такі частини:
- Заголовок: Це зазвичай використовується для відображення того, про що йдеться у вікні повідомлення. Якщо ви нічого не вказуєте, у ньому відображатиметься назва програми - у даному випадку Microsoft Excel.
- Підкажіть: Це повідомлення, яке потрібно відобразити. Ви можете використати цей простір, щоб написати пару рядків або навіть відобразити тут таблиці/дані.
- Кнопка (и): Хоча OK - це кнопка за замовчуванням, ви можете налаштувати її для відображення таких кнопок, як Так/Ні, Так/Ні/Скасувати, Повторити/Ігнорувати тощо.
- Закрити значок: Ви можете закрити вікно повідомлення, натиснувши на значок закриття.
Синтаксис функції 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.