Excel предлагает еще один путь получения данных от пользователя, который называется методомInputBox. Метод InputBox на первый взгляд имеет только пару незначительных отличий от функции InputBox. Чтобы разобраться в этих отличиях, рассмотрим сначала синтаксис метода InputBox.
Синтаксис очень похож на синтаксис функции InputBox. Отметим, что оператор начинается со слова Application. Excel является собственником метода InputBox, поэтому здесь присутствует слово Application (приложение). Более подробно суть методов рассмотрена в 8-м часе.
Большинство аргументов вам знакомы. Аргументы слева и сверху играют ту же роль, что и аргументы хпоз и yпоз в функции InputBox.
Основное отличие синтаксиса метода InputBox от синтаксиса одноименной функции заключается в последнем аргументе тип (type). Необязательный аргумент тип позволяет явно указать тип возвращаемого значения. В табл. 5.3 содержатся значения, которые может принимать этот аргумент.
Таблица 5.3. Значения аргумента тип
Значение
Возвращаемое значение
Формула
Число
Текст (строка)
Логические значения, такие как ИСТИНА и ЛОЖЬ
Ссылка на ячейку
Значение ошибки
Массив значений
Обратите внимание, что в последовательности чисел, задающих значение аргумента тип, есть пропуски, например между числами 4 и 8 или между 16 и 64. Это сделано потому, что можно суммировать значения данного аргумента. Например, если вы хотите, чтобы метод мог возвращать как текст, так и числа, сделайте аргумент тип равным 3 (1 + 2). Если аргумент тип не задан, то метод InputBox по умолчанию возвращает текст. Для демонстрации метода InputBox выполните следующие действия.
Выполните процедуру ПримерВвода.
Введите букву в поле ввода и нажмите <Enter>. Посмотрим, что получится. Так как вы ввели текст, а не число, то процедура отказывается работать (рис. 5.4), - произошла так называемая ошибка выполнения.
Щелкните на кнопке End (Конец), чтобы закрыть окно сообщения и вернуться в редактор Visual Basic.
Создайте новую процедуру с названием МетодВвод. Эта процедура будет использовать метод InputBox.
В новую процедуру введите следующий код:
Dim iResult As Integer
iResult = Application.InputBox _
("Введите число:", , , , , , , 1)
MsgBox iResult
ActiveCell.Value = iResult
Запятые в выражении Application.InputBox бронируют" места для тех аргументов, которые мы опустили. Последний аргумент, тип, имеет значение 1. Это показывает, что допустимыми вводимыми значениями являются только числа. Отметьте, что единственное отличие кода этой процедуры от кода процедуры ПримерВвода заключается в операторе Application.InputBox.
Поместите курсор внутри кода процедуры МетодВвод и нажмите <F5> для выполнения процедуры. Появится окно ввода.
Введите букву А и нажмите <Enter>. В отличие от процедуры ПримерВвода теперь не будет сообщения об ошибке выполнения, а появится окно с сообщением о причине возникшей проблемы - Неверное число (рис. 5.5).
Для закрытия окна сообщения нажмите клавишу <Enter>.
Введите число 7 и нажмите <Enter>. Отобразится окно сообщения с числом 7. Щелкните на кнопке ОК, чтобы закрыть это окно.
Рис. 5.4. Это окно сообщения указывает на ошибку выполнения процедуры. Нельзя допустить, чтобы пользователи вашего приложения получали такие окна сообщений!
Вы видели, что одним из преимуществ метода InputBox является возможность внутренней обработки ошибок. Другое отличие метола от функции заключается в значении, которое они возвращают, когда пользователь щелкает на кнопке Отмена. В этом случае функция InputBox возвращает строку нулевой длины, а метод InputBox - значение False (Ложь).
Рис. 5.5. Пользователю деликатно сообщают, что введено неверное число.