Foreversoft.ru

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

Диалоговое окно vba excel

Канал в 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» и кликаем по нему два раза ЛКМ.

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

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:

VBA Excel. Метод Application.InputBox (синтаксис, параметры)

Использование метода Application.InputBox в VBA Excel, его синтаксис и параметры. Значения, возвращаемые диалогом Application.InputBox. Примеры использования.

Метод Application.InputBox предназначен в VBA Excel для вывода диалогового окна с более расширенными возможностями, чем диалоговое окно, отображаемое функцией InputBox. Главным преимуществом метода Application.InputBox является возможность автоматической записи в поле ввода диапазона ячеек (в том числе одной ячейки ) путем его выделения на рабочем листе книги Excel и возвращения различных данных, связанных с ним, а также проверка соответствия возвращаемого значения заданному типу данных.

Читать еще:  Как очистить кэш excel

Синтаксис метода

Application.InputBox ( Prompt , Title , Default , Left , Top , HelpFile , HelpContextID , Type )

Обязательным параметром метода Application.InputBox является Prompt, если значения остальных параметров явно не указаны, используются их значения по умолчанию.

Обратите внимание на то, что

  • оператор InputBox вызывает функцию InputBox, а
  • оператор Application.InputBox вызывает метод InputBox.

Чтобы не было путаницы, метод InputBox пишут как метод Application.InputBox, в том числе и в справке разработчика.

Параметры метода

ПараметрОписаниеЗначение по умолчанию
PromptОбязательный параметр. Выражение типа String, отображаемое в диалоговом окне в виде сообщения, приглашающего ввести данные в поле. Разделить на строки сообщение можно с помощью константы vbNewLine.Нет
TitleНеобязательный параметр. Выражение типа Variant, отображаемое в заголовке диалогового окна.Слово «Ввод»
DefaultНеобязательный параметр. Выражение типа Variant, отображаемое в поле ввода при открытии диалога.Пустая строка
LeftНеобязательный параметр. Выражение типа Variant, определяющее в пунктах расстояние от левого края экрана до левого края диалогового окна (координата X).*Горизонтальное выравнивание по центру**
TopНеобязательный параметр. Выражение типа Variant, определяющее в пунктах расстояние от верхнего края экрана до верхнего края диалогового окна (координата Y).*Приблизительно равно 1/3 высоты экрана***
HelpFileНеобязательный параметр. Выражение типа Variant, указывающее имя файла справки для этого поля ввода.Нет****
HelpContextIDНеобязательный параметр. Выражение типа Variant, указывающее идентификатор контекста в справочном разделе файла справки.Нет****
TypeНеобязательный параметр. Выражение типа Variant, указывающее тип возвращаемых данных.2 (текст)

* Параметры Left и Top учитываются при отображении диалогового окна методом Application.InputBox в Excel 2003, а в последующих версиях Excel 2007-2016 уже не работают.
**При первом запуске горизонтальное выравнивание устанавливается по центру, при последующих – форма отобразиться в том месте, где ее последний раз закрыли.
***При первом запуске вертикальное расположение приблизительно равно 1/3 высоты экрана, при последующих – форма отобразиться в том месте, где ее последний раз закрыли.
**** Если будут указаны параметры HelpFile и HelpContextID, в диалоговом окне появится кнопка справки.

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

Диалоговое окно, созданное методом Application.InputBox, возвращает значение типа Variant и проверяет соответствие возвращаемого значения типу данных, заданному параметром Type. Напомню, что тип значений Variant является универсальным контейнером для значений других типов, а в нашем случае для возвращаемых в зависимости от значения параметра Type.

Аргументы параметра Type и соответствующие им типы возвращаемых значений:

Окно сообщения в VBA Excel — MsgBox

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

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

Синтаксис

Параметр Описание

  • Запрос — обязательный параметр. Строка, отображаемая в виде сообщения в диалоговом окне. Максимальная длина приглашения — около 1024 символов. Если сообщение распространяется более чем на одну строку, то строки могут быть разделены с использованием символа возврата каретки (Chr (13)) или символа перевода строки (Chr (10)) между каждой строкой.
  • Кнопки — необязательный параметр. Числовое выражение, которое указывает тип отображаемых кнопок, стиль значка для использования, идентификатор кнопки по умолчанию и модальность окна сообщения. Если оставить пустым, значение по умолчанию для кнопок равно 0.
  • Заголовок — необязательный параметр. Строковое выражение отображается в строке заголовка диалогового окна. Если заголовок оставлен пустым, имя приложения помещается в строку заголовка.
  • Файл справки — необязательный параметр. Выражение String, которое идентифицирует файл справки, который будет использоваться для предоставления контекстно-зависимой справки для диалогового окна.
  • Контекст — необязательный параметр. Числовое выражение, которое идентифицирует номер контекста справки, присвоенный автору справки, в соответствующий раздел справки. Если контекст предоставлен, также должен быть предоставлен справочный файл.

Параметр Buttons может принимать любое из следующих значений:

  • 0 vbOKOnly — отображает только кнопку OK.
  • 1 vbOKCancel — отображает кнопки «ОК» и «Отмена».
  • 2 vbAbortRetryIgnore — отображает кнопки отмены, повтора и игнорирования.
  • 3 vbYesNoCancel — отображает кнопки «Да», «Нет» и «Отмена».
  • 4 vbYesNo — отображает кнопки «Да» и «Нет».
  • 5 vbRetryCancel — отображает кнопки повтора и отмены.
  • 16 vbCritical — отображает значок критического сообщения.
  • 32 vbQuestion — отображает значок предупреждения.
  • 48 vbExclamation — отображает значок предупреждающего сообщения.
  • 64 vbИнформация. Отображает значок информационного сообщения.
  • 0 vbDefaultButton1 — первая кнопка по умолчанию.
  • 256 vbDefaultButton2 — вторая кнопка по умолчанию.
  • 512 vbDefaultButton3 — Третья кнопка по умолчанию.
  • 768 vbDefaultButton4 — Четвертая кнопка по умолчанию.
  • 0 vbApplicationModal Application modal — текущее приложение не будет работать, пока пользователь не ответит на сообщение.
  • 4096 vbSystemModal System modal — все приложения не будут работать, пока пользователь не ответит на сообщение.
Читать еще:  Olap в excel

Вышеуказанные значения логически разделены на четыре группы: первая группа (от 0 до 5) указывает кнопки, которые будут отображаться в окне сообщения. Вторая группа (16, 32, 48, 64) описывает стиль значка , который будет отображаться, в третью группу (0, 256, 512, 768) указывает на то, какая кнопка должна быть по умолчанию, а четвертую группу (0, 4096 ) определяет модальность окна сообщения.

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

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

  • 1 — нажата кнопка vbOK — OK.
  • 2 — vbCancel — нажата кнопка Отмена
  • 3 — vbAbort — нажата кнопка Abort
  • 4 — vbRetry — нажата кнопка Retry
  • 5 — vbIgnore — нажата кнопка Ignore
  • 6 — vbYes — нажата кнопка «Да»
  • 7 — vbNo — Нет щелчка

MsgBox по шагам

Шаг 1 — Вышеуказанная функция может быть выполнена либо нажатием кнопки «Выполнить» в окне VBA, либо нажатием на кнопку, которую Вы сами добавили на лист Excel.

Шаг 2 — Простой текстовый ящик отображается с сообщением «Добро пожаловать» и кнопкой «ОК»

Шаг 3 — После нажатия кнопки «ОК» отображается еще одно диалоговое окно с сообщением вместе с кнопками «да, нет и отмена».

Шаг 4 — После нажатия кнопки «Нет» значение этой кнопки (7) сохраняется как целое число и отображается как окно сообщения пользователю, как показано на следующем снимке экрана. Используя это значение, можно понять, какую кнопку щелкнул пользователь.

Программирование на VBA

Создание диалоговых окон в VBA

Диалоговое окно создается в редакторе VBA в виде формы по команде Insert — UserForm . Возникает пустая форма, ограниченная маркерами. Одновременно возникают панель инструментов ToolBox (рис.8.1).

Как правило, оформление формы производят вручную, хотя можно это выполнить в программе. Элементы управления перетаскивают на форму мышью из панели ToolBox . Свойства выбирают или устанавливают в окне Properties .

На панели ToolBox имеются следующие элементы управления:

КнопкаОписание
Select ObjectВыделение объектовПредоставляет возможность выделить объект
LabelНадписьСоздает надпись в диалоговом окне
TextBoxПолеПозволяет вводить текст
ComboBoxРаскрывающийся списокОбъединяет возможности поля ввода и списка
ListBoxСписокПредоставляет возможность выбора элемента списка
CheckBoxФлажокСоздает флажок
OptionButtonПереключательПозволяет выбрать один параметр из нескольких возможных
ToggleButtonПереключающая кнопкаСоздает переключатель «Вкл/Выкл»
FrameРамкаСоздает прямоугольник вокруг группы элементов управления
CommandButtonКомандная кнопкаСоздает кнопку для запуска команды
TabStripСтрока вкладокСоздает вкладки
MultiPageСтраницыСоздает несколько страниц
ScrolBarПолоса прокруткиСоздает полосу прокрутки
SpinButtonКнопка прокруткиДает возможность указать числовое значение
ImageИзображениеВставляет рисунок

Создать три одинаковых тора . Радиусы малой и большой окружностей задать в диалоговом окне. Соединить все три тора либо в конструкцию «тор в торе» либо цепочкой. Закрасить торы в три последовательных цвета.

Составим таблицу элементов управления для UserForm :

ПараметрЭлементИмя элемента
ДиалогUserForm
Радиус малой окружностиTextBox
Радиус большой окружностиTextBox
Переключатель «Тор в торе»OptionButton
Переключатель «Цепочка»OptionButton
Переключатель «Красный»OptionButton
Переключатель «Желтый»OptionButton
Переключатель «Зеленый»OptionButton
Закрытие диалогаCommandButton
Отказ от диалогаCommandButton
НадписиLabel

Разместим элементы на форме, например, так, как показано на рис.8.1. Текстовые надписи выполнены с помощью инструмента Label . Текстовые поля созданы элементом TextBox , а числовые значения вписаны в них в строке Text окна Properties . Переключатели (радиокнопки) установлены путем перетаскивания на форму элементов OptionButton . Кнопки с надписями OK и Cancel образованы элементом управления CommandButton . Имена элементам следует задавать близкие к выполняемым ими функциям.

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

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

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

Сохраните эту программу как файл Project_Torus. dvb . Картинки, приведенные ниже, сохраните в файлах Tor_in_tor.jpg и Chain.jpg . Файлы проекта и картинок поместите в одну папку.

Одной из задач программирования является организация интерактивности, т.е. возможности получения программой информации от пользователя. Это можно сделать двумя способами — из командной строки и через диалоговое окно.

Читать еще:  Vba excel создать лист с именем

Рассмотрим обращение к объекту Utility . Он принадлежит объекту Document и управляет методами получения информации от пользователя.

Здесь переменной iReturn присваивается целое число, введенное пользователем в командную строку. Такой метод применяется для ввода коротких и простых данных: чисел, текста или объекта. Чтобы избежать появления нескольких приглашений в одной строке, используют константу vbCrLf в начале приглашения:

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

МетодСинтаксисОписание
GetEntityОбъект. GetEntity (объект, указанная точка, приглашение)Пользователь указывает объект. Метод возвращает объект и указанную точку. Пример: ThisDrawing.Utility. GetEntity(getObj,basePnt, «Выделите объект»)
GetIntegerВозвращаемое значение = GetInteger (Приглашение)Допустимо любое целое число в диапазоне от -32768 до 32767. Пример: getInt = ThisDrawing.Utility.GetInteger («Введите целое число»)
GetPointВозвращаемое значение = GetPoint (точка, приглашение)Возвращает значение типа variant (оно содержит трехэлементный массив чисел типа double ). Пользователь может указать точку или ввести ее координаты. Если имеется необязательный параметр точка, то AutoCAD прорисовывает «резиновую линию» от заданной точки до текущей позиции указателя. Пример: getPnt = ThisDrawing.Utility. GetPoint (, «Задайте точку: «)
GetRealВозвращаемое значение = GetReal (Приглашение)Получает вещественное (положительное или отрицательное число). Пример: GetReal = ThisDrawing.Utility.GetReal («Введите вещественное число»)
GetStringВозвращаемое значение = GetString (содержит_пробелы, приглашение)Получение строки. Булев параметр содержит_пробел определяет, может ли получаемая строка содержать пробелы. Если параметр равен TRUE , то строка может содержать пробелы, а пользователь должен нажать ENTER для окончания ввода. Если значение параметра равно FALSE , то сигналом окончания ввода может служить не только нажатие ENTER , но знак пробела.

Создать процедуру, получающую информацию от пользователя

Создайте новый чертеж. Выберите команду Tools — Macro — VBA Manager . Щелкните по кнопке NEW , а затем по кнопке Visual Basic Editor . Выберите команду Insert — Module , а затем Insert — Procedure . Наберите в модуле следующий текст:

Сохраните проект как Project_HappyFace. dvb в папке AutoCAD2007Support . Вернитесь к чертежу и выберите команду Tools — Macro — Macros . В диалоговом окне выберите процедуру HappyFace и щелкните по кнопке Run . Ответьте на приглашения.

В основе приведенного примера лежит функция GetDistance . Благодаря ей пользователь может задать радиус с помощью мыши. Указанная ранее точка центра будет использована функцией GetDistance в качестве опорной. Кроме того, процедура выполняет преобразование градусов в радианы. Поэтому расположение глаз и губ будет соотноситься и с центром, и с радиусом.

Как и во всех языках программирования, в VBA существует развитая технология поиска ошибок. Простейший сеанс отладки сводится к установке точек прерывания. Перейдите в редакторе в процедуру, где предполагается наличие ошибки. Поместите курсор в первую выполняемую строку и нажмите F9 или выберите команду Debug — Toggle Breakpoint . В строку будет добавлена точка прерывания.

Выполните операторы по одному, нажимая клавишу F8 . На каждом шаге просматривайте значения переменных. При помещении указателя мыши на переменные типов Integer, Double , и String в подсказке выводится их текущее значение.

Когда ошибка обнаружена, выберите команду Run — Reset и внесите исправления в код. При следующем запуске процедуры точка прерывания останется активной. Отключить ее можно нажатием клавиши F9 . Нормальный запуск процедуры можно осуществить командой Run Sub , либо нажатием клавиши F5 .

Если программа зависает в редакторе Visual Basic , то выйдите в окно AutoCAD и прервите выполнение команды нажатием клавиши ESC .

Ключевые термины

Объектная модель AutoCAD — Иерархическая структура всех объектов AutoCAD .

Доступ — доступ к иерархии объектов, в частности, к свойствам и методам объекта Document , обеспечивается посредством объекта ThisDrawing .

Variant — тип, который может принимать данные любого типа, за исключением строк фиксированной длины и типов данных, определяемых пользователем.

Родительский объект — объект более высокого ранга. с которым данный объект постоянно связан. Все объекты имеют свойство Application , как непосредственную ссылку на корневой объект.

Пользовательская форма — диалоговое окно с элементами управления.

Реактор — процедура, которая дает возможность приложению реагировать на события, происходящие где угодно в AutoCAD .

Краткие итоги

Объектно-ориентированный язык VBA открывает широкие возможности автоматизации работы в среде AutoCAD . Все объекты AutoCAD организованы в виде иерархической структуры с корнем дерева в виде объекта Application . Связь VBA с активным чертежом AutoCAD обеспечивается посредством объекта ThisDrawing . С его помощью можно получить немедленный доступ ко всем свойствам и методам объекта Document , а также ко всем другим объектам иерархии. Кроме того, у всех объектов есть свойство Application , которое и является ссылкой на объект Application . Пользовательские формы VBA являются удобным способом создания диалоговых окон для введения в программу пользовательских данных.

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