Excel VBA MsgBox (окно сообщения) - все, что вам нужно знать!

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

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

Пока отображается диалоговое окно MsgBox, ваш код VBA останавливается. Вам нужно нажать любую кнопку в MsgBox, чтобы запустить оставшийся код VBA.

Примечание. В этом руководстве я буду использовать поле сообщения слов и MsgBox как взаимозаменяемые. При работе с Excel VBA всегда нужно использовать MsgBox.

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

Окно сообщения состоит из следующих частей:

  1. Заголовок: Обычно используется, чтобы показать, о чем идет речь в окне сообщения. Если вы ничего не укажете, отобразится имя приложения - в данном случае Microsoft Excel.
  2. Подсказка: Это сообщение, которое вы хотите отобразить. Вы можете использовать это пространство, чтобы написать пару строк или даже отобразить здесь таблицы / данные.
  3. Кнопка (и): Хотя ОК является кнопкой по умолчанию, вы можете настроить ее так, чтобы отображались такие кнопки, как Да / Нет, Да / Нет / Отмена, Повторить / Игнорировать и т. Д.
  4. Значок закрытия: Вы можете закрыть окно сообщения, щелкнув значок закрытия.

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

Как я уже упоминал, MsgBox - это функция, синтаксис которой аналогичен синтаксису других функций VBA.

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

  • Подсказка - Это обязательный аргумент. Он отображает сообщение, которое вы видите в MsgBox. В нашем примере текст «Это образец MsgBox» является «приглашением». Вы можете использовать до 1024 символов в приглашении, а также можете использовать его для отображения значений переменных. Если вы хотите показать приглашение, состоящее из нескольких строк, вы также можете это сделать (подробнее об этом позже в этом руководстве).
  • [кнопки] - Он определяет, какие кнопки и значки отображаются в MsgBox. Например, если я использую vbOkOnly, он будет отображать только кнопку ОК, а если я использую vbOKCancel, он будет отображать кнопки ОК и Отмена. Позже в этом уроке я расскажу о различных типах кнопок.
  • [заглавие] - Здесь вы можете указать, какой заголовок вы хотите в диалоговом окне сообщения. Это отображается в строке заголовка MsgBox. Если вы ничего не укажете, будет показано название приложения.
  • [файл помощи] - Вы можете указать файл справки, к которому можно получить доступ, когда пользователь нажимает кнопку «Справка». Кнопка справки появится только тогда, когда вы используете для нее код кнопки. Если вы используете файл справки, вам также необходимо указать аргумент контекста.
  • [контекст] - Это числовое выражение, которое представляет собой номер контекста справки, присвоенный соответствующему разделу справки.

Если вы не знакомы с концепцией Msgbox, не стесняйтесь игнорировать аргументы [helpfile] и [context]. Я редко видел, чтобы их использовали.

Примечание. Все аргументы в квадратных скобках необязательны. Обязательным является только аргумент «подсказка».

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

В этом разделе я расскажу о различных типах кнопок, которые вы можете использовать с VBA MsgBox.

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

Константа кнопки Описание
vbOKOnly Показывает только кнопку ОК
vbOKCancel Показывает кнопки ОК и Отмена
vbAbortRetryIgnore Отображает кнопки "Прервать", "Повторить попытку" и "Игнорировать".
vb Да Нет Показывает кнопки Да и Нет
vb Да Нет Отменить Отображает кнопки "Да", "Нет" и "Отмена".
vbRetryCancel Отображает кнопки "Повторить попытку" и "Отмена".
vbMsgBoxHelpButton Показывает кнопку "Справка". Чтобы это работало, вам необходимо использовать аргументы справки и контекста в функции MsgBox.
vbDefaultButton1 Делает первую кнопку по умолчанию. Вы можете изменить номер, чтобы изменить кнопку по умолчанию. Например, vbDefaultButton2 делает вторую кнопку по умолчанию.

Примечание. Просматривая примеры создания различных кнопок, вы можете задаться вопросом, в чем смысл этих кнопок, если они не влияют на код.

Оно делает! На основе выбора вы можете закодировать то, что вы хотите, чтобы код делал. Например, если вы выберете ОК, код должен продолжиться, а если вы нажмете Отмена, код должен остановиться. Это можно сделать, используя переменные и присвоив переменной значение окна сообщения. Мы рассмотрим это в следующих разделах этого руководства.

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

Кнопки MsgBox - vbOKOnly (по умолчанию)

Если вы используете только приглашение и не укажете ни один из аргументов, вы получите окно сообщения по умолчанию, как показано ниже:

Ниже приведен код, отображающий это окно сообщения:

Sub DefaultMsgBox () MsgBox "Это образец окна" End Sub

Обратите внимание, что текстовая строка должна быть заключена в двойные кавычки.

Вы также можете использовать константу кнопки vbOKOnly, но даже если вы ничего не укажете, она будет использоваться по умолчанию.

Кнопки MsgBox - ОК и Отмена

Если вы хотите отображать только кнопки ОК и Отмена, вам нужно использовать константу 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 для отображения кнопок Retry и Cancel.

Sub MsgBoxRetryCancel () MsgBox «Что вы хотите сделать дальше?», VbRetryCancel End Sub

Кнопки MsgBox - кнопка справки

Вы можете использовать константу vbMsgBoxHelpButton для отображения кнопки справки. Вы можете использовать его с другими константами кнопок.

Sub MsgBoxRetryHelp () MsgBox «Что вы хотите сделать дальше?», VbRetryCancel + vbMsgBoxHelpButton End Sub

Обратите внимание, что в этом коде мы объединили две разные константы кнопок (vbRetryCancel + vbMsgBoxHelpButton). В первой части показаны кнопки «Повторить» и «Отмена», а во второй части - кнопка «Справка».

Кнопки MsgBox - установка кнопки по умолчанию

Вы можете использовать константу vbDefaultButton1, чтобы установить первую кнопку по умолчанию. Это означает, что кнопка уже выбрана, и если вы нажмете клавишу ввода, она выполнит эту кнопку.

Ниже приведен код, который устанавливает вторую кнопку (кнопка «Нет») по умолчанию.

Sub MsgBoxOKCancel () MsgBox «Что вы хотите сделать дальше?», VbYesNoCancel + vbDefaultButton2 End Sub

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

Константы значков Excel VBA MsgBox (примеры)

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

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

Значок Постоянный Описание
vbCritical Показывает значок критического сообщения
vbQuestion Показывает значок вопроса
vbExclamation Показывает значок предупреждающего сообщения
vbInformation Показывает значок информации

Значки MsgBox - критические

Если вы хотите отобразить критический значок в своем MsgBox, используйте константу vbCritical. Вы можете использовать это вместе с другими константами кнопок (поставив знак + между кодами).

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

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 & "Нажмите" Да, чтобы продолжить ", vbYesNo + vbQuestion," Шаг 1 из 3 "End Sub

Вы также можете использовать символ возврата каретки - 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
Нет vb Нет 7

Теперь давайте посмотрим, как мы можем управлять кодом макроса VBA в зависимости от того, какую кнопку нажимает пользователь.

В приведенном ниже коде, если пользователь нажимает «Да», отображается сообщение «Вы щелкнули« Да »», а если пользователь нажимает «Нет», отображается «Вы щелкнули« Нет ».

Sub MsgBoxInformationIcon () Result = MsgBox («Вы хотите продолжить?», VbYesNo + vbQuestion) Если Result = vbYes, то MsgBox «Вы щелкнули Да» Иначе: MsgBox «Вы щелкнули Нет» End If End Sub

В приведенном выше коде я присвоил значение функции MsgBox переменной Result. Когда вы нажимаете кнопку Да, переменная Result получает константу vbYes (или число 6), а когда вы нажимаете No, переменная Result получает константу vbNo (или число 7).

Затем я использовал конструкцию If Then Else, чтобы проверить, содержит ли переменная Result значение vbYes. Если это так, отображается запрос «Вы щелкнули Да», в противном случае - «Вы щелкнули Нет».

Вы можете использовать ту же концепцию для запуска кода, если пользователь нажимает Да, и выхода из подпрограммы, когда он / она нажимает Нет.

Примечание. Когда вы назначаете вывод MsgBox переменной, вам необходимо заключить аргументы функции MsgBox в круглые скобки. Например, в строке Результат = MsgBox («Вы хотите продолжить?», VbYesNo + vbQuestion), вы можете видеть, что аргументы заключены в круглые скобки.

Если вы хотите более подробно изучить функцию окна сообщений, вот официальный документ по ней.

Вам также могут понравиться следующие руководства по Excel VBA:

  • Функция разделения Excel VBA.
  • Функция 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