Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
INFORMATIKA_Lektsia_0_SZhD_2_semestr_2012.doc
Скачиваний:
12
Добавлен:
01.04.2025
Размер:
359.94 Кб
Скачать

4.Диалоговые окна Visual Basic

Диалоговые окна используются в программе для ввода или вывода информации. В VBA существуют три способа ввода-вывода информации:

  • с помощью диалоговых окон;

  • с помощью компонентов экранных форм;

  • через ячейки таблицы Excel.

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

Вывод информации на экран

Для вывода на экран компьютера какого-нибудь текстового сообщения или результатов расчёта, необходимо воспользоваться диалоговым окном Message Box (окно сообщений), которое в программе вызывается командой MsgBox.

В общем виде команда записывается так: MsgBox "Текстовая строка".

При выполнении этой команды на экране появляется диалоговое окно, в котором выдаётся надпись, указанная в команде. Текст надписи обязательно должен быть в кавычках, другие символы не годятся. Сами кавычки при выполнении команды на экран не выводятся. Кроме надписи, в окне присутствует кнопка "ОК". Выполняя команду MsgBox, компьютер "зависает", т.е. делает паузу, позволяющую пользователю не спеша прочитать надпись. Чтобы закончить паузу и продолжить выполнение программы, пользователь должен нажать в окне кнопку "ОК".

Пример текста программы, использующей команду MsgBox:

Sub Program_1( )

MsgBox "Это моя первая программа"

End Sub

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

Если выводимый на экран текст получается длинным, его можно разбить на несколько строк, соединённых знаками суммы (+) и специальным словом vbCrLf :

Sub Program_1( )

MsgBox "Это моя первая программа"+vbCrLf+"и она мне нравится!"

End Sub

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

Ввод информации в программу с клавиатуры

При выполнении программ обычно приходится вводить в программу исходные данные – числа, символы, слова и прочее. Простейшим способом это можно сделать командой InputBox , что переводится как "Окно ввода". В общем виде эта команда записывается так:

A=InputBox("Сообщение","Заголовок","Стандартный ответ")

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

Команда InputBox имеет три аргумента (в круглых скобках после слова InputBox записаны при текстовых строки, разделённых запятыми): "Сообщение", "Заголовок" и "Стандартный ответ". Назначение этих аргументов следующее:

"Сообщение" – это произвольная фраза, высвечиваемая в диалоговом окне InputBox и подсказывающая пользователю, какие данные от него требуется ввести с клавиатуры;

"Заголовок" – это произвольная фраза, которая будет выведена в верхней части окна, т.е. в заголовке окна.

"Стандартный ответ" – это информация, которая будет высвечиваться в поле ввода диалогового окна InputBox и являющаяся предлагаемым стандартным вариантом вводимой информации, которым пользователь может воспользоваться вместо того, чтобы придумывать какой-нибудь свой вариант для ввода.

Рассмотрим пример использования команды InputBox:

Sub Program_1( )

A=InputBox("Укажите ваше имя","Ввод данных","Петя")

End Sub

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

При выполнении команды InputBox, программа "зависает" и ждёт действий пользователя. Пользователь должен впечатать в поле ввода любое желаемое значение вместо предлагаемого стандартного значения и нажать кнопку "ОК". Либо он может не вводить своё значение и сразу нажать "ОК". Тогда в программу будет записано предусмотренное командой стандартное значение (в нашем примере – слово "Петя"). Третий вариант поведения пользователя – он сразу нажимает кнопку "Cancel". Эффект будет, как во 2-м случае.

Не надо пугаться сложности всего перечисленного, на самом деле всё может быть гораздо проще, поскольку не обязательно использовать в каманде InputBox все три параметра, часть из них можно пропустить. В минимальном варианте эта команда записывается так:

Sub Program_1( )

A = InputBox("")

End Sub

То есть, мы отбросили "Заголовок" и "Стандартное значение", а вместо "Сообщения" записали пустые кавычки, то есть двое кавычек, записанных подряд, без текста между ними. Вот что получилось на экране:

Видно, что "Сообщение" и "Стандартное значение" отсутствуют, а вместо "Заголовка" высвечивается "Microsoft Excel".

Бесспорно, "краткость – сестра таланта", но такой минимализм может сбить с толку пользователя, которому будет непонятно, что от него хочет программист в этом месте программы, какие сведения он должен ввести в этом диалоговом окне. Поэтому желательно всё-таки дать пользователю какую-нибудь подсказку, либо с помощью "Сообщения", либо в "Заголовке":

Sub Program_1( )

A = InputBox("Укажите ваше имя")

End Sub

или:

Sub Program_1( )

A = InputBox("","Укажите ваше имя")

End Sub

В результате получаем соответственно:

или во втором варианте –

Заметим, что во 2-м варианте нами в команде InputBox использовался только второй аргумент – "Заголовок", а предшествующий аргумент, "Сообщение", был не нужен. Но правила записи команды InputBox таковы, что просто отбрасывать можно лишь те аргументы, которые стоят справа от указываемого. Если в InputBox требуется избавиться от аргумента, стоящего слева (в данном примере – от аргумента "Сообщение"), его всё равно придётся записать, хотя и в виде так называемой "пустой строки", т.е. в виде кавычек, записанных подряд, без текста между ними: A = InputBox("","Укажите ваше имя").

Знакомясь с командой InputBox, остаётся выяснить – что означает буква "А" и знак равенства слева от этой команды. Эти два символа позволяют программе запомнить то значение, которое вводит пользователь с клавиатуры. Такое действие называется "запомнить вводимое значение в переменной "А". После запоминания в переменной, введенное с клавиатуры в InputBox значение может использоваться в программе неограниченное количество раз, пока не закончится программа. При этом упоминание в тексте программы имени переменной "А" означает извлечение из памяти и использование в указанном месте содержимого переменной.

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

Sub Program_1( )

A = InputBox("", "Как вас зовут?")

MsgBox "Ну, здравствуй, " + A

End Sub

Введём с клавиатуры в InputBox слово "Вася" и нажмём "ОК". Получим:

Анализируя текст программы, обращаем внимание на то, что в диалоговом окне MsgBox выводимое на экран сообщение представляет собой две текстовые строки, сцепленные воедино знаком плюс (+). Однако вторая строка не заключена в кавычки и состоит только из одной буквы (А). В данном случае вместо текстовой строки, задаваемой в явном виде, например "Вася", в программе подставляется переменная по имени "А", в которую ранее в программе было записано командой InputBox вводимое с клавиатуры произвольное слово – любое имя, по желанию пользователя. Выгода от использования в программе переменной заключается в том, что программа стала универсальной, пригодной для любого вводимого пользователем имени (для любых исходных данных).

Запишем более сложный текст программы:

Sub Program_1( )

A = InputBox("", "Как вас зовут?", "Петя")

B = InputBox("", "Ваша фамилия?", "Петров")

C = InputBox("", "Где учитесь?", "ДВГУПС")

MsgBox "ЗНАКОМЬТЕСЬ:" + vbCrLf+ _

"это "+A+" "+B+" ,"+ vbCrLf+ _

"он (она) учится в "+C

End Sub

Из текста программы видно, что три раза подряд вызывается окно InputBox, первый раз – для ввода с клавиатуры имени, второй раз – для ввода фамилии, третий раз – для ввода названия ВУЗа. Каждый раз вводимое слово записывается в новую переменную: имя- в переменную "А", фамилия – в переменную "В", название ВУЗа – в переменную "С". Затем все три слова соединяются в единую строку знаками плюс (+) , а полученная строка выводится на экран командой MsgBox. Предположим, что пользователь, запустив программу, указал имя – "Федя", фамилию – "Фёдоров", а название ВУЗа взял как стандартное значение – "ДВГУПС", нажав в третьем окне InputBox кнопку "ОК" сразу, не меняя предлагаемого программой слова. Результат работы таков:

Поясним некоторые странности, использованные в тексте команды MsgBox. Выводимое этой командой на экран сообщение получилось длинное, поэтому его пришлось разбить на три строки, для этого использовались уже знакомые нам команды vbCrLf. Далее, между переменными А и В вставлены пробелы в кавычках. Эти пробелы необходимы, чтобы имя и фамилия, хранящиеся в этих переменных, при выводе на экран не слились зрительно в одну строку: "ФедяФёдоров". Это будет некрасиво. Далее, после переменной В (после фамилии) в формируемую текстовую строку вставляется пробел с запятой (оба символа в кавычках). И ещё одно новшество: команда MsgBox получилась очень длинной, она превышает ширину страницы текстового редактора Visual Basic, поэтому мы её принудительно разбили на три строки, каждый раз записывая в конце строки (за исключением самой последней строки) символы "пробел" и "знак подчёркивания". Эти два символа, записанные вместе подряд, указывают компьютеру, что следующая строка содержит продолжение текущей команды. Итак, пробел со знаком подчёркивания позволяют для удобства чтения программы разбивать длинную команду на несколько строк.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]