Поделиться через


Метод Application.InputBox (Excel)

Отображает диалоговое окно для данных, вводимых пользователями. Возвращает данные, введенные в диалоговом окне.

Синтаксис

expression.InputBox (Prompt, Title, Default, Left, Top, HelpFile, HelpContextID, Type)

выражение: переменная, представляющая объект Application.

Параметры

Имя Обязательный или необязательный Тип данных Описание
Prompt Обязательно String Сообщение, которое отображается в диалоговом окне. Это может быть строка, число, дата или логическое значение (Microsoft Excel автоматически переводит значение в тип String перед отображением). Максимальная длина сообщения составляет 255 символов, в противном случае запрос не выводится, а метод приложения сразу же возвращает ошибку 2015.
Title Необязательный Variant Название поля для ввода. Если этот аргумент пропущен, используется заголовок по умолчанию "Ввод".
Default Optional Variant Задает значение, которое будет отображаться в текстовом поле при первоначальном отображении диалогового окна. Если этот аргумент пропущен, текстовое поле остается пустым. Это значение может представлять собой объект Range объекта.
Left Необязательный Variant Указывает положение по оси x для диалогового окна по отношению к левому верхнему углу экрана в пунктах.
Top Необязательный Variant Указывает положение по оси y для диалогового окна по отношению к левому верхнему углу экрана в пунктах.
HelpFile Optional Variant Имя файла справки для этого поля ввода. При наличии аргументов HelpFile и HelpContextID, кнопка "Справка" будет отображаться в диалоговом окне.
HelpContextID Optional Variant Номер идентификатора контекста раздела справки в HelpFile.
Type Необязательный Variant Задает тип возвращаемых данных. Если этот аргумент опущен, диалоговое окно возвращает текст.

Возвращаемое значение

Variant

Примечания

В таблице ниже перечислены значения, которые можно передать в аргументе Type. Это может быть одиночное значение или сумма значений. К примеру, для поля ввода, которое допускает ввод текста и чисел, задайте для аргумента Type значение 1 + 2.

Значение Описание
0 Формула
1 Число
2 Текст (строка)
4 Логическое значение (правда или ложь)
8 Ссылка на ячейку в виде объекта Range
16 Значение ошибки, например, #N/A
64 Массив значений

Используйте InputBox для отображения простого диалогового окна, что позволит вам вводить данные, которое можно будет использоваться в макросе. Диалоговое окно имеет кнопку ОК и кнопку Отмена. При выборе кнопки ОКInputBox возвращает значение, введенное в диалоговом окне. При выборе кнопки ОтменаInputBox возвращает значение Ложь.

Если значение Type равно 0, InputBox возвращает формулу в виде текста, например, =2*PI()/360. Если в формуле есть все ссылки, они возвращаются в качестве ссылки в стиле A1. (Используйте ConvertFormula для преобразования стиля ссылок.)

Если значение Type равно 8, InputBox возвращает объект Range. Необходимо использовать оператор Set, чтобы назначить результат для объекта Range, как показано в приведенном ниже примере.

Set myRange = Application.InputBox(prompt := "Sample", type := 8)

Если не используется оператор Set, для переменной устанавливается значение в диапазоне, а не сам объект Range.

Если вы используете метод InputBox для запроса формулы у пользователя, необходимо использовать свойство FormulaLocal, чтобы назначить формулу для объекта Range. Ввод формулы будет выполняться на языке пользователя.

Метод InputBox отличается от функции InputBox тем, что он позволяет выполнять выборочную проверку вводимых пользователем значений и его можно использовать с объектами, значениями ошибок и формулами Excel. Обратите внимание, что Application.InputBox вызывает метод InputBox; InputBox без квалификатора объекта вызывает функцию InputBox.

Пример

В этом примере у пользователя запрашивается число.

myNum = Application.InputBox("Enter a number")

В этом примере пользователю предлагается выбрать ячейку на Листе1. В примере используется аргумент Type, чтобы гарантировать. что возвращаемое значение будет допустимой ссылкой на ячейку (объект Range).

Worksheets("Sheet1").Activate 
Set myCell = Application.InputBox( _ 
    prompt:="Select a cell", Type:=8)

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

Sub Cbm_Value_Select()
   'Set up the variables.
   Dim rng As Range
   
   'Use the InputBox dialog to set the range for MyFunction, with some simple error handling.
   Set rng = Application.InputBox("Range:", Type:=8)
   If rng.Cells.Count <> 3 Then
     MsgBox "Length, width and height are needed -" & _
         vbLf & "please select three cells!"
      Exit Sub
   End If
   
   'Call MyFunction by value using the active cell.
   ActiveCell.Value = MyFunction(rng)
End Sub

Function MyFunction(rng As Range) As Double
   MyFunction = rng(1) * rng(2) * rng(3)
End Function

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.