Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание пользовательских п ÒÉÌÏÖÅÎÉÊ ÓÒÅÄÓÔÁÍ...doc
Скачиваний:
6
Добавлен:
18.11.2019
Размер:
2.02 Mб
Скачать

Функция InputBox

Функция возвращает значение, введенное пользователем. Возможна запись функции InputBox как встроенной функции Visual Basic и как метода объекта Application.

Синтаксис функции InputBox как функции Visual Basic

InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

  • prompt – текст сообщения;

  • title – заголовок окна сообщения;

  • default – значение по умолчанию, которое высвечивается в поле ввода диалога;

  • xpos число, указывающее отступ в твипсах по горизонтали от начала экрана до левого верхнего угла диалога. Если параметр опущен, то диалог центрован по горизонтали;

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

  • helpfile – имя файла, содержащего подсказку по высвечиваемому сообщению;

  • context – числовой номер контекстного Help’а.

Важно

  • prompt – обязательный аргумент, остальные возможны.

  • Диалоговое окно имеет всегда две кнопки OK и Cancel.

  • Если нажата кнопка OK или клавиша Enter, то функция возвращает то, что введено в поле ввода диалога.

  • Если нажата кнопка Cancel, то возвращается пустая строка ("").

  • Возвращаемое функцией значение всегда имеет тип String.

  • Если предполагается ввод чисел, то введенное значение необходимо преобразовать в числовое, используя функции преобразования строк в число.

Метод InputBox объекта Application предназначен для ввода непосредственно в объекты приложения Microsoft Excel.

Синтаксис метода InputBox объекта Application

expression.InputBox(Prompt [,Title][,Default][,Left][,Top][,HelpFile,HelpContextId][,Type])

  • expression – выражение, представляющее объект Application. Указание обязательно;

  • Prompt, Title, Default, HelpFileимеют тот же смысл, что и в первой форме записи;

  • Left – число, указывающее отступ в точках по горизонтали от начала экрана до левого верхнего угла диалога. Если параметр опущен, то диалог центрован по горизонтали;

  • Top – число, указывающее отступ в точках по вертикали от начала экрана до левого верхнего угла диалога. Если параметр опущен, то диалог опущен приблизительно на одну треть экрана;

  • HelpContextId – имеет такое же значение как параметр context в форме функции VBA;

  • Type – тип возвращаемых данных. Если аргумент опущен, то возвращаемое функцией значение имеет тип String. В качестве типа может использоваться любое из перечисленных в таблице значений или их сумма.

Type

Описание

0

Формула

1

Число

2

Текст (строка символов)

4

Логическое значение (True or False)

8

Ссылка на ячейку как объект Range

16

Значение ошибки, например, #N/A

64

Массив значений

Важно

  • Диалоговое окно имеет всегда две кнопки OK и Cancel.

  • Если нажата кнопка OK или клавиша Enter, то функция возвращает то, что введено в поле диалога.

  • Если нажата кнопка Cancel, то возвращается False.

  • Если предполагается ввод чисел, то введенное значение необходимо преобразовать в числовое, используя функции преобразования строк в число.

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

Примеры

  1. Заполнение произвольного интервала ячеек введенным числом.

Public Sub fill_range()

Dim num As Single, cell_1 As Variant, cell_2 As Variant

num = Val(Application.InputBox("Введи число"))

Worksheets("Лист1").Activate

Set cell_1 = Application.InputBox(prompt:="Введи начало интервала", Type:=8)

Set cell_2 = Application.InputBox(prompt:=" Введи конец интервала ", Type:=8)

Range(cell_1, cell_2).Value = num

End Sub

Процедура запрашивает начальный и конечный адреса интервала ячеек и число, которым необходимо заполнить заданный интервал. Функция Val преобразует введенное значение в число.

Адреса интервалов вводятся как ссылки на ячейки, например, B12. Оператор Set устанавливает ссылку на первую cell_1 и последнюю cell_2 ячейки интервала. Запись Range(cell_1, cell_2).Value означает обращение к свойству Value каждой ячейки интервала.

  1. Процедура запрашивает ввод числа, выводит его квадрат и, в зависимости от выбранной командной кнопки, продолжает выполнение или заканчивает работу.

Sub numbers()

Dim p As Single, reply As Integer

Do

p =Val(InputBox("Введите число"))

If p=0 Then Exit Sub

reply = MsgBox("кв.корень = " & Sqr(p) & "Продолжить?", vbYesNo)

Loop Until reply = vbNo

End Sub

Введенное значение в преобразованном виде сохраняется в переменной p. Если нажата кнопка Cancel, то значение p равно 0 и происходит немедленный выход из процедуры.

В процедуре используется цикл типа Do... Loop Until для ввода чисел до тех пор, пока пользователь не нажмет кнопку No. Цикл выполняется по крайней мере один раз.