Упражнение 1. Вывод сообщений на экран

1. Изучите функциюMsgBox.

2. Создайте модуль Module1.

3. Вставьте текст процедуры ФункцияMsgBoxв модуль Module1.

4. Выполните процедуру ФункцияMsgBox.

5. Объясните результат.

Объединение текстовых строк

Если надо объединить несколько текстовых строк в одну, используется символ конкатенации &. Его применение, а также применение других символьных констант, используемых при выводе сообщений, на экран показано в приведённой ниже процедуре ОбъединениеСтрок.

Sub ОбъединениеСтрок()

Dim Имя As String

Dim Сообщение As String

 

Имя = InputBox("Введите ваше имя: ")

 'Следующая строка для окна сообщения объединяет

 'слово "Привет" со значением переменной Имя

MsgBox "Привет, " & Имя & "!"

Сообщение = "Это пример объединения нескольких"

Сообщение = Сообщение & " строк в одну большую"

Сообщение = Сообщение & " строку." & vbNewLine

Сообщение = Сообщение & "vbNewLine - константа, позволяющая"

Сообщение = Сообщение & " начинать новую строку"

MsgBox Сообщение

End Sub

Упражнение 2. Объединение текстовых строк

Вставьте процедуру ОбъединениеСтрок в модуль VBA Module1, запустите процедуру на выполнение, объясните результат.

Ввод данных

Ввод данных в MS Excel возможен тремя способами:

- в диалоге с клавиатуры,

- записью данных в таблицу Excel,

- используя внешние файлы.

Ввод данных в диалоге с клавиатуры. Функция InputBox

Функцию MsgBox целесообразно использовать в случае, если от пользователя надо получить ответ типа Да–Нет или ОК–Отмена. Если необходимо ввести число или текст, то применяется функция InputBox. Функция MsgBox отображает запрос в диалоговом окне ввода, ожидает ввода пользователем строки (или щелчка по кнопке окна) и возвращает строку из поля ввода окна.

Функция InputBox имеет следующий формат:

InputBox(Prompt[,Title][,Default][,Xpos][,Ypos]

[,Helpfile,Context])

Эта функция требует обязательного задания только аргумента Prompt. Так же, как и в функции MsgBox, значением аргумента Prompt служит текстовая строка, которая отображается в диалоговом окне ввода в качестве сообщения. Строковое значение prompt может содержать несколько строк. Для разделения строк допускается использование символа возврата каретки (Сhr(13)), символа перевода строки (Chr (10)) или комбинацию этих символов (Chr(13) & Chr (10)).

Аргумент title используется для задания текста, который помещается в строке заголовка окна ввода. Если этот аргумент не задан, то в строке заголовка отображается слово Ввод.

Аргумент default задает значение, которое отображается по умолчанию в поле ввода, пока пользователь не введет свое значение. Если этот аргумент опустить, то отображается пустое поле ввода.

Необязательные аргументы xpos и ypos задают положение окна ввода на экране.

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

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

Аргументы helpfile и context используются в том случае, если в приложении создаётся собственная система справки.

Возвращаемым значением функции InputBox является значение, введенное пользователем в поле ввода.

Пример:

Sub ФункцияInputBox()

Dim Данное As Variant

Данное = InputBox("Введите данное")

MsgBox "Введённое данное равно " & Данное

ActiveCell.Value = Данное

End Sub

Тип возвращаемого значения определен как Variant, т.е. тип определяется введенным значением.

Метод InputBox

В Excel имеется еще один способ ввода данных пользователем в интерактивном режиме, который имеет называние метод InputBox. Формат метода:

Application.InputBox(Prompt,Title,Default,Left,Top,

HelpFile,HelpContextId,Type)

Метод InputBox является методом объекта Application, и поэтому здесь присутствует слово Application. Аргументы этого метода, кроме Type, такие же, как и у функции InputBox. Основное отличие синтаксиса метода InputBox от синтаксиса одноименной функции заключается в последнем аргументе Type. Необязательный аргумент Type позволяет явно указать тип возвращаемого значения. В приведённой ниже таблице содержатся значения, которые может принимать этот аргумент.

Таблица 5.

Значения аргумента Type

Значение Возвращаемое значение
0 Формула
1 Число
2 Текст (строка)
4 Логические значения, такие как ИСТИНА и ЛОЖЬ
8 Ссылка на ячейку
16 Значение ошибки
64 Массив значений

Пример:

Sub Пример()

Dim Данное As Integer

Данное = Application.InputBox("Введите число:",,,,,,, 1)

MsgBox "Введённое данное равно " & Данное

End Sub

Запятые в выражении Application. InputBox указывают места пропущенных аргументов. Последний аргумент – Type имеет значение 1. Это показывает, что допустимыми вводимыми значениями являются только числа.

Преимуществом метода InputBox является возможность обнаружения ошибок при вводе данных. Например, если при выполнении процедуры Пример введено не число, то будет выведено следующее сообщение об ошибке:

Можно суммировать значения аргумента Type. Например, если нужно, чтобы метод мог возвращать как текст, так и числа, следует сделать аргумент Type равным 3 (1 + 2). Если аргумент Type не задан, то метод InputBox по умолчанию возвращает текст.

Пример:

Sub ФункцияInputBox2()

Dim Данное As Variant

Данное = Application.InputBox("Введите данное:",,,,,,, 3)

MsgBox "Введённое данное равно " & Данное

End Sub

Пропуск отмечающих запятых, а также перестановка аргументов функции приводит к ошибкам несовпадения типов. Для предотвращения ошибок программирования функций при вводе аргументов VBA предоставляет возможность передавать значения аргументов функции, используя именованные аргументы функций. Приведённая ниже процедура Пример2 иллюстрирует использование именованных аргументов функций Prompt, Title и Type; она решает ту же задачу, что и процедура Пример.

Sub Пример2()

Dim Данное As Integer

Данное = Application.InputBox(Prompt:= "Введите число:", _

Title:="Проверка типа данных", Type:=1)

MsgBox Prompt:= "Введённое данное равно " & Данное, _

Title:="Проверка ввода данных"

End Sub

Следует обратить внимание на то, что:

- имя аргумента отделяется от его значения символом “:=” (двоеточие и равно);

- порядок перечисления именованных аргументов не обязательно совпадает с их порядком в формате функции;

- список аргументов функции MsgBox не заключается в скобки;

- в операторе Данное = Application.InputBox … функция InputBox используется как метод приложения Application, и поэтому её аргументы заключаются в скобки.

Результаты выполнения процедуры Пример2 представлены на рис. 32.

Рис.32. Результат выполнения процедуры Пример2.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: