Foreversoft.ru

IT Справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Excel макросы msgbox

VBA Excel. Функция MsgBox (синтаксис, параметры, значения)

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

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

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

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

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

Пример 1

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

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

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

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

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

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

КонстантаОписаниеЗначение
vbOKOnlyОтображается только кнопка OK.
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

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

Канал в Telegram

Вы здесь

Примеры работы с диалоговыми сообщениями (msgbox) в VBA

В статье «Примеры макросов в Excel. Диалоговое VBA сообщение msgBox» мы вкратце познакомились с диалоговым сообщением msgbox. Но это было простейшее информационное сообщение. Теперь рассмотрим подробнее работу с функцией MsgBox и все виды диалоговых сообщений.

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

Функция MsgBox имеет следующий синтаксис:

MsgBox ( сообщение [, константы сообщения] [, заголовок] [, файл справки hlp, контекст справки])

Обязательным параметром является «Сообщение», остальные могут быть опущены.

MsgBox “Текст сообщения

  • Константы сообщения — позволяют определить вид диалогов.
  • Заголовок – задает заголовок формы диалога.
  • Файл справкиhlp — строковое выражение, указывающее имя файла справки для диалогового окна.
  • Контекст справки — числовое выражение, указывающее номер контекста файла справки для диалогового окна.

Диалоговое окно вида:

создается следующей командой:
MsgBox «Текст содержащий вопрос», vbYesNo, «Название сообщения»

Для создания сообщения такого вида:

команда будет выглядеть так:
MsgBox «Текст содержащий вопрос», vbYesNoCancel, «Название сообщения»

Сообщение такого вида:

создается командой:
MsgBox «Текст содержащий вопрос», vbAbortRetryIgnore, «Название сообщения»

т.е. из всех трех примеров в команде меняется только второй параметр (vbYesNo, vbYesNoCancel, vbAbortRetryIgnore). Это и есть значения (константы) определяющие вид сообщения. Параметры (vbYesNo, vbYesNoCancel) могут быть заменены на числовое значение, например диалог vbYesNo можно вызвать, указав 4: MsgBox «Текст содержащий вопрос», 4, «Название сообщения».

Ниже приведен полный список констант и эквивалентных им цифровых значений:

Константа

Значение

Описание

vbOKOnly

Выводит сообщение с кнопкой OK

vbOKCancel

Выводит сообщение с кнопками OK и Отмена

vbAbortRetryIgnore

Выводит сообщение с кнопками Прервать, Повтор, Пропустить

vbYesNoCancel

Выводит сообщение с кнопками Да, Нет, Отмена.

vbYesNo

Выводит сообщение с кнопками Да и Нет

vbRetryCancel

Выводит сообщение с кнопками Повтор и Отмена

В сообщениях можно слегка изменить внешний вид, назначить кнопку по умолчанию, добавить кнопку «Справка» путем сложения констант.

Например: MsgBox «Текст содержащий вопрос», vbYesNoCancel+vbInformation+vbMsgBoxHelpButton+vbDefaultButton2, «Название сообщения» построит сообщение вида:

vbInformation — добавляет иконку восклицания в сообщение
vbMsgBoxHelpButton — добавляет кнопку «Справка»
vbDefaultButton2 — устанавливает фокус на второй кнопке («Нет«)

Ниже таблица со списком констант иконок и констант, устанавливающих фокус на кнопках:

Константа

Значение

Описание

vbCritical

Выводит иконку критического сообщения (красный овал с крестом)

vbQuestion

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

vbExclamation

Выводит иконку с восклицательным знаком (в желтом треугольнике)

vbInformation

Выводит иконку информационного сообщения

vbDefaultButton1

Устанавливает фокус по умолчанию на первой кнопке

vbDefaultButton2

Устанавливает фокус по умолчанию на второй кнопке

vbDefaultButton3

Устанавливает фокус по умолчанию на третьей кнопке

vbDefaultButton4

Устанавливает фокус по умолчанию на четвертой кнопке

vbMsgBoxHelpButton

Добавляет кнопку Справка

vbMsgBoxRight

Выравнивание текста сообщения по правой стороне

vbMsgBoxRtlReading

Зеркально переворачивает все элементы в сообщении (см. снимок ниже)

Как узнать какую кнопку в сообщении нажал пользователь?

Определяться выбор пользователя будет с помощью условия IF. В некоторых ситуациях можно использовать Select Case.

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

Создаем новую книгу Excel и переходим в режим Visual Basic (Alt+F11). В окне проекта выбираем «Лист1» и кликаем по нему два раза ЛКМ.

Читать еще:  Функция rank excel

В открывшемся окне редактора кода вводим следующую процедуру:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If MsgBox(«Текст содержащий вопрос», vbYesNo, «Название сообщения») = vbYes Then
Selection = «Нажата ДА»
Else
Selection = «Нажата Нет»
End If

End Sub

В условии IF мы сравниваем результат возвращенный функцией MsgBox, с константой vbYes т.е. если в сообщении нажата кнопка «Да», тогда функция MsgBox возвращает значение vbYes (6). Полный перечень констант и их цифровых эквивалентов ниже. Теперь попробуйте на Листе 1 кликнуть два раза по любой ячейке.

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

Второй вариант вызова диалога с помощью Select Case.

Создадим вторую процедуру на Листе 2. Код процедуры следующий:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim mes
mes = MsgBox(«Текст содержащий вопрос», vbYesNoCancel + vbInformation + vbDefaultButton2, «Название сообщения»)

Select Case mes
Case vbYes: Selection = «Нажата ДА»
Case vbNo: Selection = «Нажата НЕТ»
Case vbCancel: Selection = «Нажата Отмена»
End Select

End Sub

В этом случае результат вызова MsgBox присваивается переменной mes и далее в Select Case ищется совпадение и согласно совпадения, выполняются действия.

Вот и все. Ниже прикреплен готовый пример, рассмотренный в этой статье.

Перечень констант и значений, возвращаемых функцией MsgBox:

Excel VBA MsgBox [Message Box] – All You Need to Know!

In Excel VBA, you can use the MsgBox function to display a message box (as shown below):

A MsgBox is nothing but a dialog box that you can use to inform your users by showing a custom message or get some basic inputs (such as Yes/No or OK/Cancel).

While the MsgBox dialog box is displayed, your VBA code is halted. You need to click any of the buttons in the MsgBox to run the remaining VBA code.

This Tutorial Covers:

Anatomy of a VBA MsgBox in Excel

A message box has the following parts:

  1. Title: This is typically used to display what the message box is about. If you don’t specify anything, it displays the application name – which is Microsoft Excel in this case.
  2. Prompt: This is the message that you want to display. You can use this space to write a couple of lines or even display tables/data here.
  3. Button(s): While OK is the default button, you can customize it to show buttons such as Yes/No, Yes/No/Cancel, Retry/Ignore, etc.
  4. Close Icon: You can close the message box by clicking on the close icon.

Syntax of the VBA MsgBox Function

As I mentioned, MsgBox is a function and has a syntax similar to other VBA functions.

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

  • prompt – This is a required argument. It displays the message that you see in the MsgBox. In our example, the text “This is a sample MsgBox” is the ‘prompt’. You can use up to 1024 characters in the prompt, and can also use it to display the values of variables. In case you want to show a prompt that has multiple lines, you can do that as well (more on this later in this tutorial).
  • [buttons] – It determines what buttons and icons are displayed in the MsgBox. For example, if I use vbOkOnly, it will show only the OK button, and if I use vbOKCancel, it will show both the OK and Cancel buttons. I will cover different kinds of buttons later in this tutorial.
  • [title] – Here you can specify what caption you want in the message dialog box. This is displayed in the title bar of the MsgBox. If you don’t specify anything, it will show the name of the application.
  • [helpfile] – You can specify a help file that can be accessed when a user clicks on the Help button. The help button would appear only when you use the button code for it. If you’re using a help file, you also need to also specify the context argument.
  • [context] – It is a numeric expression that is the Help context number assigned to the appropriate Help topic.

If you’re new to the concept of Msgbox, feel free to ignore the [helpfile] and [context] arguments. I have rarely seen these being used.

Note: All the arguments in square brackets are optional. Only the ‘prompt’ argument is mandatory.

Excel VBA MsgBox Button Constants (Examples)

In this section, I will cover the different types of buttons that you can use with a VBA MsgBox.

Before I show you the VBA code for it and how the MsgBox looks, here is a table that lists all the different button constants you can use.

Button ConstantDescription
vbOKOnlyShows only the OK button
vbOKCancelShows the OK and Cancel buttons
vbAbortRetryIgnoreShows the Abort, Retry, and Ignore buttons
vbYesNoShows the Yes and No buttons
vbYesNoCancelShows the Yes, No, and Cancel buttons
vbRetryCancelShows the Retry and Cancel buttons
vbMsgBoxHelpButtonShows the Help button. For this to work, you need to use the help and context arguments in the MsgBox function
vbDefaultButton1Makes the first button default. You can change the number to change the default button. For example, vbDefaultButton2 makes the second button as the default
Читать еще:  Перемотка видео на ютубе

Note: While going through the examples of creating different buttons, you may wonder what’s the point of having these buttons if it doesn’t have any impact on the code.

It does! Based on the selection, you can code what you want the code to do. For example, if you select OK, the code should continue, and if you click Cancel, the code should stop. This can be done by using variables and assigning the value of the Message Box to a variable. We will cover this in the later sections of this tutorial.

Now let’s have a look at some examples of how the different buttons can be displayed in a MsgBox and how it looks.

MsgBox Buttons – vbOKOnly (Default)

If you only use the prompt and don’t specify any of the arguments, you will get the default message box as shown below:

Below is the code that will give this message box:

Note that the text string needs to be in double quotes.

You can also use the button constant vbOKOnly, but even if you don’t specify anything, it’s taken as default.

MsgBox Buttons – OK & Cancel

If you only want to show the OK and the Cancel button, you need to use the vbOKCancel constant.

MsgBox Buttons – Abort, Retry, and Ignore

You can use the ‘vbAbortRetryIgnore’ constant to show the Abort, Retry, and the Ignore buttons.

MsgBox Buttons – Yes and No

You can use the ‘vbYesNo’ constant to show the Yes and No buttons.

MsgBox Buttons – Yes, No and Cancel

You can use the ‘vbYesNoCancel’ constant to show the Yes, No, and Cancel buttons.

MsgBox Buttons – Retry and Cancel

You can use the ‘vbRetryCancel’ constant to show the Retry and Cancel buttons.

MsgBox Buttons – Help Button

You can use the ‘vbMsgBoxHelpButton’ constant to show the help button. You can use it with other button constants.

Note that in this code, we have combined two different button constants (vbRetryCancel + vbMsgBoxHelpButton). The first part shows the Retry and Cancel buttons and the second part shows the Help button.

MsgBox Buttons – Setting a Default Button

You can use the ‘vbDefaultButton1’ constant to set the first button as default. This means that the button is already selected and if you press enter, it executes that button.

Below is the code that will set the second button (the ‘No’ button) as the default.

In most cases, the left-most button is the default button. You can choose other buttons using vbDefaultButton2, vbDefaultButton3, and vbDefaultButton4.

Excel VBA MsgBox Icon Constants (Examples)

Apart from the buttons, you can also customize the icons that are displayed in the MsgBox dialog box. For example, you can have a red critical icon or a blue information icon.

Below is a table that lists the code that will show the corresponding icon.

Icon ConstantDescription
vbCriticalShows the critical message icon
vbQuestionShows the question icon
vbExclamationShows the warning message icon
vbInformationShows the information icon

MsgBox Icons – Critical

If you want to show a critical icon in your MsgBox, use the vbCritical constant. You can use this along with other button constants (by putting a + sign in between the codes).

For example, below is a code that will show the default OK button with a critical icon.

If you want to show the critical icon with Yes and No buttons, use the following code:

MsgBox Icons – Question

If you want to show a critical icon in your MsgBox, use the vbQuestion constant.

MsgBox Icons – Exclamation

If you want to show an exclamation icon in your MsgBox, use the vbExclamation constant.

MsgBox Icons – Information

If you want to show an information icon in your MsgBox, use the vbInformation constant.

Customizing Title and Prompt in the MsgBox

When using MsgBox, you can customize the title and the prompt messages.

So far, the example we have seen have used Microsoft Excel as the title. In case you don’t specify the title argument, MsgBox automatically uses the title of the application (which has been Microsoft Excel in this case).

You can customize the title by specifying it in the code as shown below:

Similarly, you can also customize the prompt message.

You can also add line breaks in the prompt message.

In the below code, I have added a line break using ‘vbNewLine’.

You can also use the carriage return character – Chr(13) – or line feed – Chr(10) to insert a new line in the prompt message.

Читать еще:  Lookup function excel

Note that you can add a new line to the prompt message only and not the title.

Assigning MsgBox Value to a Variable

So far, we have seen the examples where we have created message boxes and customized the buttons, icons, title, and prompt.

However, clicking a button has done nothing.

With MsgBox function in Excel, you can decide what you want to do when a user clicks a specific button. And this is possible as every button has a value associated to it.

So if I click on the Yes button, the MsgBox function returns a value (6 or the constant vbYes) which I can use in my code. Similarly, is the user selects the No button, it returns a different value ((7 or the constant vbNo)) that I can use in the code.

Below is a table that shows the exact values and the constant returned by the MsgBox function. You don’t need to memorize these, just be aware of it and you can use the constants which are easier to use.

Button ClickedConstantValue
OkvbOk1
CancelvbCancel2
AbortvbAbort3
RetryvbRetry4
IgnorevbIgnore5
YesvbYes6
NovbNo7

Now let’s see how we can control the VBA macro code based on what button a user clicks.

In the below code, if the user clicks Yes, it displays the message “You Clicked Yes”, and if the user clicks No, it displays, “You clicked No”.

In the above code, I have assigned the value of the MsgBox function to the Result variable. When you click Yes button, the Result variable gets the vbYes constant (or the number 6) and when you click No, the Result variable gets the vbNo constant (or the number 7).

Then I used an If Then Else construct to check if the Result variable holds the value vbYes. If it does, it shows the prompt “You Clicked Yes”, else it shows “You clicked No”.

You can use the same concept to run a code if a user clicks Yes and exit the sub when he/she clicks No.

If you want to further dig into the Message Box function, here is the official document on it.

You May Also Like the Following Excel VBA Tutorials:

Excel макросы msgbox

Функция MsgBox выводит на экран диалоговое окно, содержащее сообщение, устанавливая режим ожидания нажатия кнопки пользователем

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

Возвращает значение типа Integer , указывающее, какая кнопка была нажата

Ниже перечислены значения, содержащие код нажатой кнопки:

КонстантаЗначениеНажатая кнопка
vbOK1OK
vbCancel2Отмена (Cancel)
vbAbort3Прервать (Abort)
vbRetry4Повторить (Retry)
vbIgnore5Пропустить (Ignore)
vbYes6Да (Yes)
vbNo7Нет (No)

Параметры
Функция содержит именованные аргументы

ЧастьОписание
PromptОбязательный. Строковое выражение, отображаемое как сообщение в диалоговом окне. Максимальная длина строки составляет приблизительно 1024 символа. Длинный текст разбивается автоматически, но можно задавать разбиение строки явно, используя символы возврата каретки и перевода строки(vbCrLf)
ButtonsНеобязательный аргумент — целочисленная константа, которая является суммой VB-констант, определяющих ряд характеристик диалогового окна — число и тип кнопок, тип значка, основная кнопка, модальность окна сообщения(см.ниже). Значение по умолчанию равно 0
TitleНеобязательный. Строковое выражение, отображаемое в строке заголовка диалогового окна. Максимальное число символов для заголовка около 50. Если этот параметр опущен, в строку заголовка помещается имя приложения
HelpFileНеобязательный. Строковое выражение, определяющее имя файла Справки, содержащего контекстно-зависимую Справку о данном диалоговом окне. Если этот параметр указан, то необходимо задать также и параметр Context
ContextНеобязательный. Числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот параметр указан, то необходимо задать также и параметр HelpFile

Константы, используемые в аргументе Buttons для задания вида выводимых кнопок, пиктограмм

КонстантаЗначениеОписание
vbOKOnlyОтображается только кнопка «OK»
vbOKCancel1Отображаются кнопки «OK» и «Отмена» (Cancel)
vbAbortRetryIgnore2Отображаются кнопки «Прервать» (Abort), «Повторить» (Retry) и «Пропустить» (Ignore)
vbYesNoCancel3Отображаются кнопки «Да» (Yes), «Нет» (No) и «Отмена» (Cancel)
vbYesNo4Отображаются кнопки «Да» (Yes) и «Нет» (No)
vbRetryCancel5Отображаются кнопки «Повторить» (Retry) и «Отмена» (Cancel)
vbCritical16Используется значок «Критическое сообщение»
vbQuestion32Используется значок «Предупреждающий запрос»
vbExclamation48Используется значок «Предупреждение»
vbInformation64Используется значок «Информационное сообщение»
vbDefaultButton1Основной является первая кнопка
vbDefaultButton2256Основной является вторая кнопка
vbDefaultButton3512Основной является третья кнопка
vbDefaultButton4768Основной является четвертая кнопка
vbApplicationModalМодальное окно на уровне приложения: чтобы продолжить работу с текущим приложением, необходимо ответить на данное сообщение
vbSystemModal4096Модальное окно на уровне системы: все приложения будут недоступны до тех пор, пока пользователь не ответит на данное сообщение
vbMsgBoxHelpButton16384Добавляется кнопка Справка(Help)
VbMsgBoxSetForeground65536Аналогично параметру vbApplicationModal
vbMsgBoxRight524288Текст выравнивается по правому краю
vbMsgBoxRtlReading1048576Задает порядок вывода текста справа налево для арабской системы и иврит

Примечание

Если используется кнопка Отмена(Cancel), то можно вместо нее нажимать на клавишу Esc
В отличие от InputBox окно MsgBox не позиционируется на экране, а всегда располагается в центре экрана

Ссылка на основную публикацию
Adblock
detector