Диалоговые окна средствами VBA - учимся создавать интерактив

» »

Диалоговые окна средствами VBA - учимся создавать интерактив (картинка, фото)
Диалоговые окна средствами VBA - учимся создавать интерактив
Статья создана: , обновлена:

Содержание

Диалоговые окна

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

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

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

Синтаксис

InputBox(сообщение [, заголовок] [, default] [, xpos] [, ypos])

Аргументы

сообщение - строковое выражение, отображаемое как сообщение в диалоговом окне. Может содержать несколько строк. Для разделения строк допускается использование символа возврата каретки (chr(13)), символа перевода строки (chr(10)) или комбинации этих клавиш (chr(13) & chr(10));

заголовок - строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку помещается имя приложения;

Default - строковое выражение, отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода отображается пустым;

Xpos - числовое выражение, задающее расстояние по горизонтали между левой границей диалогового окна и левым краем экрана;

Ypos - числовое выражение, задающее расстояние по вертикали между верхней границей диалогового окна и верхним краем экрана.

Чтобы передать эту информацию (введенное значение в поле ввода) программе, присвойте возвращенное функцией InputBox значение строковой переменной, например:

strA=InputBox("Какие места предпочитаете?", "РЖД", "У окна")

Результат функции InputBox
Результат функции InputBox

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

Другие программы с элементарными функциями для новичков

Синтаксис

MsgBox(сообщение [, кнопки] [, заголовок] [, файл_справки, раздел])

Аргументы

сообщение - строковое выражение, отображаемое как сообщение в диалоговом окне;

кнопки - числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и модальность окна сообщения. Значение по умолчанию равно 0. Все значения данного аргумента указаны в таблице «Значения аргумента кнопки процедуры MsgBox» и таблице «Значения аргумента кнопки процедуры MsgBox»;

заголовок - строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку помещается имя приложения;

файл справки - строковое выражение, определяющее имя файла справки, содержащего справочные сведения о данном диалоговом окне. Если этот аргумент указан, необходимо наличие также аргумента context;

раздел - числовое выражение, определяющее номер соответствующего раздела справочной системы.

Значения аргумента кнопки процедуры MsgBox 1

Константа Значение / код Отображаемые кнопки
VbOkOnly 0

MsgBox("Привет!", vbOKOnly)=vbOk

VbOkCancel 1

MsgBox ("Привет!", vbOKCancel)=vbOk

VbAbortRetryIgnore 2

MsgBox ("Привет!", VbAbortRetryIgnore)=vbAbort

VbYesNoCancel 3

MsgBox("Привет!", VbYesNoCancel)=vbYes

VbYesNo 4

MsgBox ("Привет!", vbYesNo)=vbYes

VbRetryCancel 5

MsgBox ("Привет!", VbRetryCancel)=vbretry

Константа Значение Значок сообщения
VbCritical 16

MsgBox("Привет!", vbCritical)=vbYes

Описание

Описание

Критическое сообщение

VbQuestion 32

MsgBox("Привет!", VbQuestion)=vbYes

Описание

Описание

Предупреждающий запрос

VbExclamation 48

MsgBox("Привет!", VbExclamation)=vbYes

Описание

Описание

Предупреждающее сообщение

VbInformation 64

MsgBox("Привет!", vbInformation)=vbYes

Описание

Описание

Информирующее сообщение

Если в окне сообщения всего две кнопки, для выяснения, на какой из кнопок был щелчок, прекрасно подходит оператор If … then. Например:

If MsgBox («Начинать?», vbYesNo)= vbYes then

Операторы на действие этой кнопки

Else

Операторы на действие другой кнопки

End if

Пример.

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

Форма примера в режиме конструктора
Форма примера в режиме конструктора

Листинг работы формы

Private Sub CommandButton1_Click()

If MsgBox("Вывести текст?", vbYesNo)=vbYes Then

If Documents.Count=0 Then Documents.Add Selection.Text="Изучение работы с текстом в документе Word является важной составной частью умения программировать в VBA, "+ TextBox1.Text + ", и отвечает запросам всех программистов!"

Selection.Font.Color=wdColorBlue

Selection.Font.Bold=wdToggle

Selection.Font.Italic=wdToggle

Else

Unload Me

End If

End Sub

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

Форма примера в рабочем режиме
Форма примера в рабочем режиме

Изучение работы с текстом в документе Word является важной составной частью умения программировать в VBA, Света, и отвечает запросам всех программистов!

Задачи на закрепление материала

Пример

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

Технология выполнения

  • Создайте форму для реализации этой игры.
  • Описание процедур.

Кнопка Бросание монеты

Private Sub CommandButton1_Click()

Randomize

монета=Int(2 * Rnd)

If OptionButton1.Value=True Then

If монета=0 Then MsgBox «не везет. Займись-ка лучше изучением VBA»

If монета=1 Then MsgBox «везунчик. Поздравляю, ты выиграл»

End If

If OptionButton2.Value=True Then

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

If монета=1 Then MsgBox «не везет. Займись-ка лучше изучением VBA»

If монета=0 Then MsgBox «везунчик. Поздравляю, ты выиграл»

End If End Sub

Кнопка Выход из игры

Private Sub CommandButton2_Click()

Dim ima As String

intA=MsgBox(«Нажмите кнопку!», vbYesNoCancel +

vbExclamation + vbDefaultButton3, «VBA для чайников!»)

If MsgBox(«начинать?», vbYesNoCancel)=vbYes Then

ima=InputBox(«введите Ваше имя», «Пример окна ввода»)

If ima <> "" Then

MsgBox «Привет», & ima, vbInformation, «Пример окна сообщения»

Else

MsgBox «невежа, ты забыл ввести свое имя» & ima, vbExclamation, «еще один пример окна сообщения» End If

Else

If MsgBox(«ты точно подумал?», vbYesNoCancel)=vbNo Then

MsgBox («ха-ха»)

Else: MsgBox «Ну наконец-таки!»

Unload Me

End If

End If End Sub

Пример.

В разработанном игровом приложении предусмотреть создание окна «Банк», в котором будет выводиться результат очков игрока при остановке игры. Правила игры: при выигрыше игрока добавляется единица к сумме, лежащей в банке, при проигрыше - добавляется компьютеру (отнимается из суммы, лежащей в банке).

Предусмотреть все необходимые диалоговые окна.

Пример

Смоделировать полную игру в орел и решку. Игрок вносит в банк определенную сумму денег. Во время игры нельзя добавлять деньги в банк. Игра состоит из последовательности шагов, априори конечных. На очередном шаге игрок загадывает либо орел, либо решку. Компьютер «бросает» монету. Если «монета падает той же стороной», которую задал игрок, то банк увеличивается на единицу, в противном случае - уменьшается на единицу. Игра заканчивается либо по желанию игрока, либо когда величина банка становится нулем или больше 10 000 руб. (определенная сумма). Игрок забирает себе содержимое банка. Можно предусмотреть максимальные и минимальные суммы, которые были в банке в течение всей игры.

Примечание. Можно смоделировать бросание игральной кости, используя функцию Int(6* Rnd)+1. Правила меняются: выиграл тот, кто больше бросил.

Технология выполнения

Рассмотрим один из вариантов решения данной задачи. Усложним эту задачу тем, что каждое последующее окно вызывается соответствующим действием.

  • Пусть при запуске приложения появляется первое диалоговое окно. При нажатии на кнопку «Начать игру» появляются диалоговые окна, запрашивающие имя игрока и подтверждение начать игру. После чего появляется форма ввода ставок.

Private Sub CommandButton1_Click()

imya=InputBox("введите ваше имя", "Регистрация", "????")

If MsgBox("Начинать?", vbYesNo, "Вы не передумали?") =

vbYes Then

UserForm2.Show

Else

UserForm4.Show

End If

End Sub

Диалоговое окно запуска игры примера
Диалоговое окно запуска игры примера
Диалоговые окна начала игры
Диалоговые окна начала игры
Диалоговое окно выбора ставки
Диалоговое окно выбора ставки

Кнопка Бросок имитирует подбрасывание монеты игроком, производит расчет выигрыша и проигрыша игрока, выводя соответствующие значения в текстовые окна с сообщением счета игры.

Главная форма примера, имитирующая игру в орел и решку
Главная форма примера, имитирующая игру в орел и решку

Кнопка Бросок

Private Sub CommandButton1_Click()

TextBox1.Value=TextBox1.Value + 1

If b=Fix(Rnd * 2 + 1) Then

TextBox4.Value=TextBox4.Value + 1

TextBox5.Value=TextBox5.Value + 1

Else

TextBox4.Value=TextBox4.Value - 1

TextBox6.Value=TextBox6.Value + 1

If TextBox4.Value < 1 Then

MsgBox («Вы проиграли!»)

UserForm4.Show

End If

End If

If Val(TextBox2.Text) < Val(TextBox4.Text) Then

TextBox2.Value=Val(TextBox4.Text)

Else

If Val(TextBox3.Text) > Val(TextBox4.Text) Then

TextBox3.Value=Val(TextBox4.Text)

End If

End If

OptionButton1.Value=False

OptionButton2.Value=False

CommandButton1.Enabled=False

End Sub

Кнопка Выход завершает игру, выдает итоговые сообщения.

Private Sub CommandButton2_Click()

MsgBox ("Партий" + TextBox1.Value + (Chr(13)) + "в банке " + TextBox4.Value + (Chr(13)) + "ваш максимум" + TextBox2.Value + (Chr(13)) + "ваш минимум" + TextBox3.Value + (Chr(13)) + "счет" + TextBox5.Value +":" + TextBox6.Value)

UserForm4.Show

End Sub

Private Sub UserForm Initialize()

Unload UserForm2

OptionButton1.Value=True

TextBox4.Value=a

Label6.Caption=imya

TextBox2.Value=TextBox4.Value

TextBox3.Value=TextBox4.Value

End Sub

Итоговые расчеты игры примера
Итоговые расчеты игры примера

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

Объявление глобальных переменных и создание модуля запуска главной формы игры в примере
Объявление глобальных переменных и создание модуля запуска главной формы игры в примере
Есть вопросы, замечания, дополнения? Пишите в комментариях.
диалоговые окна, интерактивный, интерактив

Страница: Диалоговые окна средствами VBA - учимся создавать интерактив

Дата публикации: 2010.11.16 05:01.Обновление: 2014.05.14 23:59

Следующая статья:

Полезные темы:

Как научиться создавать прибыльные сайты надолго
Как научиться создавать прибыльные сайты надолго
Описание, как собственными силами и знаниями, научиться создавать хорошие, а главное прибыльные сайты в домашних условиях
Как разрезать изображения и создавать изображения-карты
Как разрезать изображения и создавать изображения-карты
В этой статье описывается технология обрезания изображений для размещения на сайтах с интерактивной графикой
Как действительно заработать в интернет для женщин
Как действительно заработать в интернет для женщин
Статья о том, как действительно зарабатывать деньги в Интернет для женской половины человечества
Фиксированный фон на сайте, как это сделать
Фиксированный фон на сайте, как это сделать
Многие хотят на своем любимом сайте сделать фиксированный фон но не знают как это сделать, а о кроссбраузерности иногда вообще речи не идет, так что давайте рассмотрим
Макросы VBA - как создать и запустить
Макросы VBA - как создать и запустить
Описание основных наборов инструкций, при помощи которых создаются и запускаются макросы в офисных приложениях
наверх