Excel vba msgbox вывод переменной

На чтение 10 мин. Просмотров 38.4k.

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

Default message in a VBA Msgbox

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

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

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

Содержание

  1. Анатомия VBA MsgBox в Excel
  2. Синтаксис функции VBA MsgBox
  3. Константы кнопки Excel VBA MsgBox (примеры)
  4. Константы значков Excel VBA MsgBox (примеры)
  5. Настройка заголовка и приглашения в MsgBox
  6. Присвоение значения MsgBox переменной

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

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

Anatomy of an VBA Msgbox dialog box

  1. Title — заголовок: обычно используется для отображения содержания окна сообщения. Если вы ничего не указали, отображается имя приложения, в данном случае Microsoft Excel.
  2. Prompt — подсказка: это сообщение, которое вы хотите отобразить. Вы можете использовать это пространство, чтобы написать пару строк или даже отобразить таблицы / данные здесь.
  3. Button(s) — кнопка(-и): хотя кнопка «ОК» является кнопкой по умолчанию, ее можно настроить таким образом, чтобы отображать такие кнопки, как «Да / Нет»; «Да / Нет / Отмена», «Повторить» / «Пропустить» и т.д.
  4. Close Icon — значок закрытия: Вы можете закрыть окно сообщения, нажав на значок закрытия.

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

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

MsgBox( prompt [, buttons ] [, title ] [, helpfile, context ] )

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

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

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

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

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

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

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

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

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

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

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

Sample message box

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

Sub DefaultMsgBox()
MsgBox "This is a sample box"
End Sub

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

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

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

Если вы хотите показать только ОК и кнопку Отмена, вам нужно использовать константу vbOKCancel

Sub MsgBoxOKCancel()
MsgBox "Want to Continue?", vbOKCancel
End Sub

ok and cancel buttons in a message box

Кнопки MsgBox — Отмена, Повтор и Игнорирование

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

Sub MsgBoxAbortRetryIgnore()
MsgBox "What do you want to do?", vbAbortRetryIgnore
End Sub

Excel VBA Msgbox - Abort Retry and Cancel buttons

Кнопки MsgBox — Да и Нет

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

Sub MsgBoxYesNo()
MsgBox "Should we stop?", vbYesNo
End Sub

Yes and No buttons in a message box

Кнопки MsgBox — Да, Нет и Отмена

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

Sub MsgBoxYesNoCancel()
MsgBox "Should we stop?", vbYesNoCancel
End Sub

Excel VBA Message Box- Yes and No and Cancel

Кнопки MsgBox — повторить попытку и отменить

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

Sub MsgBoxRetryCancel()
MsgBox "What do you want to do next?", vbRetryCancel
End Sub

Retry and Cancel buttons

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

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

Sub MsgBoxRetryHelp()
MsgBox "What do you want to do next?", vbRetryCancel + vbMsgBoxHelpButton
End Sub

help button in the message box dialog box

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

MsgBox Buttons — Настройка кнопки по умолчанию

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

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

Sub MsgBoxOKCancel()
MsgBox "What do you want to do next?", vbYesNoCancel + vbDefaultButton2
End Sub

by default, second button is selected

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

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

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

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

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

Иконки MsgBox — Критические

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

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

Sub MsgBoxCriticalIcon()
MsgBox "This is a sample box", vbCritical
End Sub

Excel VBA Msgbox - critical icon

Если вы хотите показать критический значок с кнопками Да и Нет, используйте следующий код:

Sub MsgBoxCriticalIcon()
MsgBox "This is a sample box", vbYesNo + vbCritical
End Sub

Excel VBA Msgbox - critical icon YesNO

Иконки MsgBox — Вопрос

Если вы хотите показать иконку вопроса в своем MsgBox, используйте константу vbQuestion.

Sub MsgBoxQuestionIcon()
MsgBox "This is a sample box", vbYesNo + vbQuestion
End Sub

Excel VBA Msgbox - question icon

Иконки MsgBox — Восклицательный знак

Если вы хотите показать восклицательный значок в вашем MsgBox, используйте константу vbExclamation.

Sub MsgBoxExclamationIcon()
MsgBox "This is a sample box", vbYesNo + vbExclamation
End Sub

Excel VBA Msgbox - exclamation icon

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

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

Sub MsgBoxInformationIcon()
MsgBox "This is a sample box", vbYesNo + vbInformation
End Sub

Excel VBA Msgbox - information

Настройка заголовка и приглашения в MsgBox

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

До сих пор в примерах, которые мы видели, использовался Microsoft Excel в качестве заголовка. Если вы не указали аргумент title, MsgBox автоматически использует заголовок приложения (в данном случае это был Microsoft Excel).

Вы можете настроить заголовок, указав его в коде, как показано ниже:

Sub MsgBoxInformationIcon()
MsgBox "Do you want to continue?", vbYesNo + vbQuestion, "Step 1 of 3"
End Sub

Excel VBA Msgbox - title

Точно так же вы также можете настроить сообщение подсказки.

Excel VBA Msgbox - prompt

Вы также можете добавить разрывы строк в сообщении подсказки.

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

Sub MsgBoxInformationIcon()
MsgBox "Do you want to continue?" & vbNewLine & "Click Yes to Continue", vbYesNo + vbQuestion, "Step 1 of 3"
End Sub

Excel VBA Msgbox - vbnewline

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

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

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

До сих пор мы видели примеры, где мы создавали окна сообщений и настраивали кнопки, значки, заголовок и приглашение.

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

С помощью функции MsgBox в Excel вы можете решить, что вы хотите делать, когда пользователь нажимает определенную кнопку. И это возможно, поскольку каждая кнопка имеет значение, связанное с ней.

Поэтому, если я нажимаю кнопку «Да», функция MsgBox возвращает значение (6 или константа vbYes), которое я могу использовать в своем коде. Аналогично, если пользователь выбирает кнопку «Нет», он возвращает другое значение ((7 или константа vbNo)), которое я могу использовать в коде.

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

При нажатии кнопки Константа Значение
Ok vbOk 1
Cancel vbCancel 2
Abort vbAbort 3
Retry vbRetry 4
Ignore vbIgnore 5
Yes vbYes 6
No vbNo 7

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

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

Sub MsgBoxInformationIcon()
Result = MsgBox("Do you want to continue?", vbYesNo + vbQuestion)
If Result = vbYes Then
MsgBox "You clicked Yes"
Else: MsgBox "You clicked No"
End If
End Sub

Yes No prompt based on user selection

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

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

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

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

Если вы хотите в дальнейшем углубиться в функцию Message Box, вот официальный документ по ней.

Использование функции MsgBox в VBA Excel, ее синтаксис и параметры. Значения, возвращаемые функцией MsgBox. Примеры использования.

Функция MsgBox предназначена в VBA Excel для вывода сообщения в диалоговом окне, ожидания нажатия кнопки и возврата значения типа Integer, указывающего на то, какая кнопка была нажата. Для упрощения восприятия информации, в этой статье не рассматриваются параметры, связанные с контекстной справкой и модальностью диалогового окна MsgBox.

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

MsgBox ( Prompt [, Buttons ] [, Title ])

Обязательным параметром функции MsgBox является Prompt, если Buttons и Title явно не указаны, используются их значения по умолчанию. Кроме того, если необязательные параметры не указаны и возвращаемое значение не присваивается переменной, сообщение не заключается в скобки:

Пример 1

Sub Test1()

MsgBox «Очень важное сообщение!»

End Sub

Параметры функции

Параметр Описание Значение
по умолчанию
Prompt* Обязательный параметр. Выражение типа String, отображаемое в диалоговом окне в виде сообщения. Разделить на строки можно с помощью константы vbNewLine. Нет
Buttons Необязательный параметр. Числовое выражение, которое представляет собой сумму значений, задающих номер и тип отображаемых кнопок, стиль используемого значка, тип кнопки по умолчанию. 0
Title Необязательный параметр. Выражение типа String, отображаемое в заголовке диалогового окна. Имя приложения**

*Максимальная длина параметра Prompt составляет примерно 1024 знака и зависит от их ширины.

**В Excel по умолчанию в заголовке MsgBox выводится надпись «Microsoft Excel».

Константы параметра «Buttons»

Тип и количество кнопок

Константа Описание Значение
vbOKOnly Отображается только кнопка OK. 0
vbOKCancel Отображаются кнопки OK и Cancel (Отмена). 1
vbAbortRetryIgnore Отображаются кнопки Abort (Прервать), Retry (Повторить) и Ignore (Пропустить). 2
vbYesNoCancel Отображаются кнопки Yes (Да), No (Нет) и Cancel (Отмена). 3
vbYesNo Отображаются кнопки Yes (Да) и No (Нет). 4
vbRetryCancel Отображаются кнопки Retry (Повторить) и Cancel (Отмена). 5

Стиль значка

Константа Описание Значение
vbCritical Отображается значок Critical — Критичное сообщение, сообщение об ошибке. 16
vbQuestion Отображается значок Question — Сообщение с вопросом. 32
vbExclamation Отображается значок Exclamation — Предупреждающее сообщение. 48
vbInformation Отображается значок Information — Информационное сообщение. 64

Для просмотра отображаемых значков, скопируйте код в свой модуль и запустите на выполнение:

Пример 2

Sub Test2()

Dim a As Integer

a = MsgBox(«Критичное сообщение, сообщение об ошибке», 16)

a = MsgBox(«Сообщение с вопросом», 32)

a = MsgBox(«Предупреждающее сообщение», 48)

a = MsgBox(«Информационное сообщение», 64)

End Sub

Кнопка по умолчанию

Константа Описание Значение
vbDefaultButton1 По умолчанию активна первая кнопка. 0
vbDefaultButton2 По умолчанию активна вторая кнопка. 256
vbDefaultButton3 По умолчанию активна третья кнопка. 512

Возвращаемые значения

Константа Кнопка Значение
vbOK OK 1
vbCancel Отмена 2
vbAbort Прервать 3
vbRetry Повторить 4
vbIgnore Пропустить 5
vbYes Да 6
vbNo Нет 7

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

Для третьего примера зададим следующие параметры первой функции MsgBox:

  • Prompt = «Выберите кнопку!»
  • Buttons = 323 (3 (vbYesNoCancel) + 64 (vbInformation) + 256 (vbDefaultButton2))
  • Title = «Выбор кнопки»

Вторая функция MsgBox используется как простое информационное сообщение с параметрами по умолчанию.

Пример 3

Sub Test3()

Dim a As Integer

a = MsgBox(«Выберите кнопку!», 323, «Выбор кнопки»)

If a = 6 Then

MsgBox «Вы нажали кнопку: Да»

ElseIf a = 7 Then

MsgBox «Вы нажали кнопку: Нет»

Else

MsgBox «Вы нажали кнопку: Отмена»

End If

End Sub

В этом примере, в зависимости от нажатой кнопки в первом диалоговом окне, во втором сообщении выводится название нажатой кнопки. Обратите внимание, что вторая кнопка в открывшемся первом окне MsgBox выделена по умолчанию и срабатывает при нажатии клавиши «Enter».

А что будет, если первое диалоговое окно из третьего примера закрыть крестиком? Проверьте сами.

Подобно многим языкам программирования Visual Basic for Application (VBA) позволяет создать три типа процедур: Sub, Function, Property.

Процедура – это набор описаний и инструкций, сгруппированных для выполнения.

Процедура Sub – набор команд, с помощью которого можно решить определенную задачу. При ее запуске выполняются команды процедуры, а затем управление передается в приложение или процедуру, которая вызвала процедуру Sub. Записываемые макросы автоматически описываются как процедуры Sub, любой макрос или другой код VBA, который просто выполняет определенный набор действий, используя приложения Office, и обычно является процедурой Sub.

Процедура Function (или функция) также представляет собой набор команд, который решает определенную задачу. Различия заключается в том, что процедуры данного типа обязательно возвращают значение. При создании процедуры Function можно описать тип данных, который возвращает функция. Функции обычно используются при выполнении вычислений, операциями с текстом, либо возвращают логические значения.

Процедура Property используется для ссылки на свойство объекта. Данный тип процедур применяется для установки или получения значения пользовательских свойств форм и модулей. Процедуры облегчают хранение и применение информации, если использовать их сначала для сохранения в свойстве этой информации, а затем для ее чтения.

Структура процедуры

При записи процедуры требуется соблюдать правила ее описания. Упрощенный синтаксис для процедур Sub является следующим:

Sub имя ([аргументы])
Инструкции
End Sub

Синтаксис описания функций очень похож на синтаксис описания процедуры Sub, однако, имеются некоторые отличия:

Function имя ([аргументы]) [As Тип]
Инструкции
имя = выражение
End Function

Использование операторов

Процедуры состоят из операторов – наименьших единиц программного кода. Как правило, операторы занимают по одной строке программного кода, и в каждой строке обычно содержится только один оператор, но это не обязательно. В VBA имеется четыре типа операторов: объявления, операторы присваивания, выполняемые операторы и параметры компилятора.

Объявления

Объявление – это оператор, сообщающий компилятору VBA о намерениях по по­воду использования в программе именованного объекта (переменной, константы, поль­зовательского типа данных или процедуры). Кроме того, объявление задает тип объекта и обеспечивает компилятору дополнительную информацию о том, как ис­поль­зовать данный объект. Объявив объект, можно использовать его в любом месте программы.

Переменные – это именованные значения, которые могут изменяться во время выполнения программы.

Рассмотрим пример объявления переменной.

С помощью оператора Dim объявляется переменная с именем МоеЛюбимоеЧисло и объявляется, что значение, которое она будет содержать, должно быть целым:

Dim МоеЛюбимоеЧисло As Integer

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

Оператор Constant создает строковую константу (текст) с именем НеизменныйТекст, представляющую собой набор символов Вечность:

Constant НеизменныйТекст = "Вечность"

Оператором Type объявляется пользовательский тип данных с именем Самоделкин, определяя его как структуру, включающую строковую переменную с именем Имя и переменную типа Date с именем ДеньРождения. В данном случае объявление займет несколько строк:

Type Самоделкин
Имя As String
ДеньРождения As Date
End Type

Объявление Private создает процедуру типа Sub с именем СкрытаяПроцедура, говоря о том, что эта процедура является локальной в смысле об­ласти видимости. Завершающий процедуру оператор End Sub считается частью объ­явления.

Private Sub СкрытаяПроцедура ()
инструкции
End Sub

Оператор присваивания

Оператор присваивания = приписывают переменным или свойствам объектов конкретные значения. Такой оператор всегда состоят из трех частей: имени переменной, или свойства, знака равенства и выражения, задающего нужное значение.

Оператор = присваивает переменной МоеЛюбимоеЧисло значение суммы переменной ДругоеЧисло и числа 12.

МоеЛюбимоеЧисло = ДругоеЧисло + 12

В следующей строке кода, записывается, что свойству Color (Цвет) объекта AGraphicShape присваивается значение Blue (Синий) в предположении, что Blue является именованной константой:

AGraphicShape.Color = Blue

В следующеей строке, чтобы задать значение переменной КвадратныйКорень, для текущего значения переменной МоеЛюбимоеЧисло вызывается функция Sqr — встроенная функция VBA вычисления квадратного корня:

КвадратныйКорень = Sqr (МоеЛюбимоеЧисло)

В VBA выражением называется любой фрагмент программного кода, задающий некоторое числовое значение, строку текста или объект. Выражение может содержать любую комбинацию чисел или символов, констант, переменных, свойств объектов, встроенных функций и процедур типа Function, связанных между собой знаками операции (например, + или *). Несколько примеров выражений:

Выражение

Значение

3.14

3.14

Xn*5

10 (в предположении, что Xn = 2)

(12 — Sqr(x))/5

2 (в предположении, что х = 4)

«Розы красные,» &
« фиалки фиолетовые»

Розы красные, фиалки фиолетовые

Выполняемые операторы

Выполняемые операторы делают главную работу в программе и используются для выполнения следующих задач:

  • вызов процедуры;
  • активизация метода некоторого объекта;
  • управление порядком, в котором должны выполняться другие операторы, посредством организации циклов или выбором участка программного кода (из нескольких альтернатив) для последующего выполнения;
  • выполнение одного из встроенных операторов VBA или функции.

Пример. Оператор, вызывающий для выполнения метод Rotate объекта AGraphicShape:

AGraphicShape. Rotate(90)

Запись нескольких операторов

Как правило, каждый оператор занимает одну строку программного кода, но VBA не обязывает уместить оператор в одной строке. Если оператор слишком длинный, можно разместить его в двух или более строках, добавив в конце каждой из строк (кроме последней) символ подчеркивания (_).

Можно сделать и наоборот — разместить несколько операторов в одной строке программного кода. Например,

Dim A As Integer, В As Integer: A = 3: B = 5: A = A +B

Эта строка программного кода эквивалентна следующим четырем строкам:

Dim A As Integer, В As Integer
A = 3
B = 5
А = А + В

Самыми простыми диалоговыми окнами являются окна сообщений (message boxes) — это диалоговые окна, которые выдают пользователю сообщения и снабжаются одной или более кнопками для выбора. В VBA они создаются с использованием функции MsgBox.

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

Sub Program ()
MsgBox "Это - окно сообщений"
End Sub

Статья 3 - Картинка 1

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

Sub ShoeValue()
Amount = 10
MsgBox Amount
End Sub

Статья 3 - Картинка 2

Переменной Amount присваивается значение 10. На следующей строке для отображения значения Amount используется MsgBox. Вокруг Amount нет кавычек, поскольку это – значение переменной, которое нужно выдать на экран, а не слово «Amount».

Чтобы использовать вместе две отдельные строки в одном окне сообщения, следует использовать операцию конкатенации (&) — объединение.

Sub SayGoodNight()
Name = "Саша"
MsgBox "Пожелайте доброй ночи " & Name
End Sub

Статья 3 - Картинка 3

Переменной Name присваивается строка «Саша». В строке кода с MsgBox задаётся текстовая строка «Пожелайте доброй ночи «, за которой следует & Name, указывая MsgBox присоединить значение переменной Name к предыдущей текстовой строке.

Опции MsgBox

Статья 3 - Картинка 4

необязательные аргументы, например, для того, чтобы вставить значок или изменить заголовок (title).

MsgBox "Это - замечательное окно сообщений", _vbExclamation, "Персональное окно"

Статья 3 - Картинка 4

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

Таблица 1

Значки окна сообщений MsgBox

Отображение

Константа

Когда используется

Image4.gif

vbInformation

для сообщения, не требующего ответа

Image5.gif

vbQuestion

для того, чтобы задать вопрос

Image6.gif

vbExclamation

для выдачи важной информации

Image7.gif

vbCritical

для предупреждения

MsgBox как функция

MsgBox является функцией и может возвращать значение, соответствующее той кнопке, которую нажимает пользователь. Одной из имеющихся опций окна сообщения является изменение кнопок, которое оно отображает. Вот окно сообщений, которое появляется, когда осуществляется выход из Excel, имея не сохраненные изменения в документе. Это окно имеет три кнопки.

Статья 3 - Картинка 6

После выбора соответствующей кнопки Excel получает информацию о том, какую кнопку выбрали.

Общий формат для функции MsgBox:

MsgBox(prompt [, buttons] [, title])

где prompt — единственный обязательный аргумент. Для окна сообщений следует задавать текстовую строку с информацией. если вы хотите изменить заголовок, появляющийся в верхней части окна, задайте для заголовка (title) текстовую строку. По умолчанию используется заголовок Microsoft Excel.

Таблица 2 Комбинации кнопок MsgBox

Отображение

Константа

Когда используется

Image9.gif

vbOKOnly

Когда не требуется от пользователя принятия решения

Image9.gifImage11.gif

vbOKCancel

Когда окно сообщений объясняет возможное действие. Позволяет пользователю сделать выбор с помощью кнопки Отмена

Image9.gifImage10.gif

vbYesNo

Альтернатива константе vbOKCancel, когда кажется, что это сделает окно сообщений более понятным

Image9.gifImage11.gifImage10.gif

vbYesNoCancel

Для таких ситуаций, как выход или закрытие файлов без сохранения (подобно ситуации, показанной на рисунке выше)

Image12.gifImage13.gifImage14.gif

vbAbortRetryIgnore

При ответе на сообщения об ошибках диска или файла

Image13.gifImage11.gif

vbRetryCancel

При ответе на сообщения об ошибках диска или файла

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

Примеры решения задач

Приведем несколько примеров решения задач на VBA.

Пример 1. Вычислить значение выражения a равного

Статья 3 - Картинка 7, при x = 3, y = 2.5

Решение.

Sub выражение1()
Dim A, x, y
 
x = 3
y = 2.5
 
A = 2 * x - 3 * y
 
MsgBox (A)
 
End Sub

Пояснение решения.

В строке Dim A, x, y объявляются переменные A, x, y.

Пример 2.

Пример 2. Вычислить значение выражения a равного

Статья 3 - Картинка 7, при x = 3, y = 2.5

Замечание: значения x и y вводит пользователь.

Решение.

Sub выражение2()
Dim A, x, y As Double
 
x = InputBox("Введите x=")
y = InputBox("Введите y=")
 
A = 2 * x - 3 * y
 
MsgBox (A)
 
End Sub

Пояснение решения.

В строке Dim A, x, y As Double описываются переменные A, x, y как числа двойной точности.

При использовании строки

x = InputBox("Введите x=")

появиться окно

Статья 3 - Картинка 9

Пример 3

Пример 3. Вычислить значение выражения a равного

Статья 3 - Картинка 7, при x = 3, y = 2.5

Замечание: значения x и y вводит пользователь, ответ выводится в виде «a = <значение>».

Решение.

Sub выражение3()
Dim A, x, y As Double
Dim ответ As String
 
x = InputBox("Введите x=")
y = InputBox("Введите y=")
 
A = 2 * x - 3 * y
ответ = "a=" + Str(A)
 
MsgBox (ответ)
 
End Sub

Пояснение решения.

В строке Dim ответ As String описывается переменная ответ как строковая.

Код Str(A) преобразует значение переменной A в строку.

Пример 4

Пример 4. Вычислить значения выражений при x = 3, y = 2.5

Статья 3 - Картинка 7,

Статья 3 - Картинка 12,

Статья 3 - Картинка 13,

Статья 3 - Картинка 14,

Статья 3 - Картинка 15

Решение.

Sub выражение4()
Dim A, b, c, d, a1, x, y As Double
 
x = InputBox("Введите x=")
y = InputBox("Введите y=")
 
A = 2 * x - 3 * y
b = (2 * x - 3 * y) / 2
c = (2 * x - 3 * y) / 2 * x
d = (2 * x - 3 * y) / (2 * x)
a1 = (2 * x - 3 * y) / (2 * x) + (5 - x) / (3 + y)
 
MsgBox ("a=" + Str(A))
MsgBox ("b=" + Str(b))
MsgBox ("c=" + Str(c))
MsgBox ("d=" + Str(d))
MsgBox ("a1=" + Str(a1))
 
End Sub

Пример 5

Пример 5. Выполнить пример 4, другим способом, с помощью вспомогательных переменных.

Решение.

Sub выражение5()
Dim A, b, c, d, a1, a2, b1, c1, c2, x, y As Double
 
x = InputBox("Введите x=")
y = InputBox("Введите y=")
 
A = 2 * x - 3 * y
b = (2 * x - 3 * y) / 2
c = (2 * x - 3 * y) / 2 * x
d = (2 * x - 3 * y) / (2 * x)
a1 = (2 * x - 3 * y) / (2 * x) + (5 - x) / (3 + y)
 
‘ новое решение
b1 = A / 2
c1 = b * x
c2 = b / (2 * x)
a2 = d + (5 - x) / (3 + y)
MsgBox ("a=" + Str(A))
MsgBox ("b=" + Str(b))
MsgBox ("c=" + Str(c))
MsgBox ("d=" + Str(d))
MsgBox ("a1=" + Str(a1))
MsgBox ("b1=" + Str(b1))
MsgBox ("c1=" + Str(c1))
MsgBox ("c2=" + Str(c2))
MsgBox ("a2=" + Str(a2))
 
End Sub

Пример 6

Пример 6. Вычислить площадь треугольника по трем известным сторонам. Например, a = 3, b = 4, c = 5.

Решение.

Sub Герон1()
Dim A, b, c, p, s As Double
A = 3
b = 4
c = 5
 
p = (A + b + c) / 2
s = Sqr(p * (p - A) * (p - b) * (p - c))
 
MsgBox ("s=" + Str(s))
 
End Sub

Пояснение решения.

Для решения задачи используется формула Герона.

Пример 7

Пример 7. Вычислить площадь треугольника по трем известным сторонам.

Решение.

Sub Герон2()
Dim A, b, c, p, s As Double
 
A = Val(InputBox("Введите a="))
b = Val(InputBox("Введите b="))
c = Val(InputBox("Введите c="))
 
p = (A + b + c) / 2
s = Sqr(p * (p - A) * (p - b) * (p - c))
 
MsgBox ("s=" + Str(s))
 
End Sub

Пояснение решения.

Код Val(InputBox(«Введите a=»)) преобразует введенное значение через InputBox в число, так как InputBox возвращает строку. Если такого преобразования не сделать, то программа правильно вычислять s не будет.

Пример 8

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

Решение.

Sub гипотенуза()
Dim a, b, c, p, s As Double
 
a = Val(InputBox("Введите a="))
b = Val(InputBox("Введите b="))
 
c = Sqr(a ^ 2 + b ^ 2)
 
MsgBox ("c=" + Str(c))
 
End Sub

Create a pop-up message box in Excel using VBA Macros. This allows you to show a message to the user and to get input back, depending on which buttons were clicked in the pop-up message.

To output a message in Excel, we use the MsgBox function. Below, you will find many examples that should suit your needs.

Sections:

Syntax

Example 1 — Output Basic Text

Example 2 — Add Buttons to the Message Box

Example 3 — Figure Out Which Button Was Clicked

Example 4 — Do Something After the User Clicks a Button

Example 5 — Change MsgBox Appearance

Notes

Syntax

MsgBox(prompt, [buttons], [title], [helpfile], [context])
Argument Description
Prompt

The text that will be in the message box. This is the only required argument for the MsgBox function.

[Buttons]

Allows you to display different buttons and icons in the message box.

[Title]

Text that appears in the title bar of the message box.

[Helpfile]

Not needed. Allows for a specific help file to be used.

[Context]

Not needed. Required if the helpfile argument is used.

[] means it is an optional argument.

Button Arguments

These are the values that can be entered for the buttons argument. You will use the VB Codes to add them to the message box. Examples below will include some of these options so you can better understand them.

VB Code Description Value

vbOKOnly

OK Button. Default.

0

vbOKCancel

OK and Cancel buttons.

1

vbAbortRetryIgnore

Abort, Retry, and Ignore buttons.

2

vbYesNoCancel

Yes, No, and Cancel buttons.

3

vbYesNo

Yes and No buttons.

4

vbRetryCancel

Retry and Cancel buttons.

5

vbCritical

Displays the Critical Message icon in the message box window.

16

vbQuestion

Displays the Warning Query icon in the message box window.

32

vbExclamation

Displays the Warning Message icon in the message box window.

48

vbInformation

Displays the Information Message icon in the message box window.

64

vbDefaultButton1

Selects the first button in the message box by default.

0

vbDefaultButton2

Selects the second button in the message box by default.

256

vbDefaultButton3

Selects the third button in the message box by default.

512

vbDefaultButton4

Selects the fourth button in the message box by default.

768

vbApplicationModal

Application modal; the user must respond to the message box before continuing work in Excel.

0

vbSystemModal

System modal; all applications are suspended until the user responds to the message box.

4096

VbMsgBoxSetForeground

Specifies the message box window as the foreground window

65536

vbMsgBoxRight

Text is right aligned

524288

Values Returned from Button Clicks in the Message Box

When a user clicks one of the buttons that are in the message box, a value will be returned to VBA; that value corresponds to the button that was clicked and is listed below.

Button Clicked Returned Constant Returned # Value

OK

vbOK

1

Cancel

vbCancel

2

Abort

vbAbort

3

Retry

vbRetry

4

Ignore

vbIgnore

5

Yes

vbYes

6

No

vbNo

7

Example 1 — Output Basic Text

Basic message box with text.

This is the simplest form of outputting a message.

MsgBox "Hi, this is my message."

a63ffa7cd8882f6ceadecdb8df1f21ba.jpg

Running the macro we get this:

c46b3081178c9e6626f8785ee388b478.jpg

Remember, the OK button is there by default and clicking that simply closes the pop-up message box window.

Example 2 — Add Buttons to the Message Box

Message box with multiple buttons.

MsgBox "Hi, this is my message.", vbYesNoCancel

db0f8fdeac20a772711bf8eafc93ce33.jpg

I added a comma after the display text and then input one of the VB codes from the Button Arguments list above.

2dea7d7b5e6391765e3a6b6661789ebd.jpg

Run the macro and we get this in Excel:

f8ac44abed8da3166c9ce60897767240.jpg

Example 3 — Figure Out Which Button Was Clicked

When a button is clicked, it sends a value back to Excel. Now, we need to capture that value so we can do something with it.

response = MsgBox("Hi, this is my message.", vbYesNoCancel)

4201571bd7a681c0b0102d55a8ff2ec2.jpg

All we have to do is to set a variable equal to the output of the MsgBox function. Here, the variable response is equal to the output of the function, which means that we type response =  and then the msgbox function.

Note also that there are now parentheses surrounding the arguments for the MsgBox function; these weren’t included before because they weren’t needed. Often, they aren’t used when creating simple pop-up windows.

I will now output the variable response into a Msgbox of its own so you can see the value it returns after a button was clicked.

Here is the final code for this example:

b6056271ee5283726f0493532c267437.jpg

Run it and you get this:

7ee7a2cc2dd7f2214b8abc8f2e9773a9.jpg

Click one of the buttons and the next message box will open with the value that was returned as a result of the button click in the first window.

ad4d29f171f3b99745743da22c860edb.jpg

A 6 is returned, which means the button Yes was clicked. We know this from the table above «Values Returned from Button Clicks in the Message Box», which lists the values that each button click will return.

Example 4 — Do Something After the User Clicks a Button

Now that you know how to determine which button was clicked, let’s do something useful with it.

I will make a simple IF statement that checks which button was clicked and outputs a message based on that.

Sub button_action_msgbox()

response = MsgBox("Hi, this is my message.", vbYesNo)

If response = 6 Then
    MsgBox "You clicked Yes"
ElseIf response = 7 Then
    MsgBox "You clicked No"
End If

End Sub

74e8e0e525ee2b884813984e0bb0585f.jpg

Run the macro:

5a3ec2e9d11e8f438483a7b79788801a.jpg

Hit one of the buttons and the next part of the macro will run and the corresponding msgbox will appear:

1a40178ea6aa380be3256decf2a543f8.jpg

At this point, we have created a useful pop-up message box that solicits feedback and does something with that feedback.

Example 5 — Change MsgBox Appearance

You can add some additional things to the pop-up window to change its look and feel and here I will include some of those options, including a custom title for the window.

Sub button_style_msgbox()

MsgBox _
    "Hi, this is my message.", _
    vbOKOnly + vbInformation, _
    "Custom Title"

End Sub

8d756ee11ae6c7f7f5dbd0ba45030a52.jpg

First, notice that I used «_» at the end of each line so that I could place this piece of code on multiple lines.

Second, notice that there is now a custom title called Custom Title that will appear for the msgbox.

Third, notice that there is more than one option for the buttons argument and that each argument is separated with a plus sign (+) like this: vbOKOnly + vbInformation.

Run the macro and we get this:

12471f5ba0f2c25a758a04457f3b1079.jpg

The option vbOKOnly meant there would be only an OK button. The option vbInformation put that image with the i inside the blue circle in there. The custom title appears in the upper-left corner of the pop-up message box window.

Notes

These are a few examples that should get you comfortable using the Message Box pop-up window feature in macros in Excel.

This is a great way to give some information to your user that they must process or at least must reply to in some way before continuing.

Make sure to download the sample file attached to this tutorial to get all of the sample VBA Macro codes.

Содержание

  • Анатомия VBA MsgBox в Excel
  • Синтаксис функции VBA MsgBox
  • Константы кнопки Excel VBA MsgBox (примеры)
  • Константы значков Excel VBA MsgBox (примеры)
  • Настройка заголовка и подсказки в MsgBox
  • Присвоение значения MsgBox переменной

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

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

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

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

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

  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.

Понравилась статья? Поделить с друзьями:
  • Excel vba msgbox yes no if
  • Excel vba microsoft excel objects
  • Excel vba for each cell in range cells
  • Excel vba for dummy pdf
  • Excel vba for down to