Application.InputBox 方法 (Excel)

显示用于用户输入的对话框。 返回在对话框中输入的信息。

语法

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

expression:表示 Application 对象的变量。

参数

名称 必需/可选 数据类型 说明
Prompt 必需 String 要在对话框中显示的消息。 此参数可以是字符串、数字、日期或布尔值(在消息显示前,Microsoft Excel 会自动将此值强制转换为 String )。 最大长度为 255 个字符,否则不会出现提示,应用程序的方法将立即返回错误 2015。
Title 可选 Variant 输入框的标题。 如果省略此参数,则默认标题为“输入”。
Default 可选 Variant 指定在对话框最初显示时文本框中显示的值。 如果省略此参数,即表示将文本框留空。 此值可以是 Range 对象。
Left 可选 Variant 指定对话框相对于屏幕左上角的 X 坐标(以磅为单位)。
Top 可选 Variant 指定对话框相对于屏幕左上角的 Y 坐标(以磅为单位)。
HelpFile 可选 Variant 此输入框使用的帮助文件名。 如果有 HelpFileHelpContextID 参数,对话框中会显示帮助按钮。
HelpContextID 可选 Variant HelpFile 中帮助主题的上下文 ID 号。
Type 可选 Variant 指定返回的数据类型。 如果省略此参数,则对话框返回文本。

返回值

Variant

备注

下表列出了可以在 Type 参数中传递的值。 可以是一个值,也可以将多个值相加。 例如,对于可接受文本和数字的输入框,将 Type 设置为 1 + 2。

说明
0 公式
1 数字
2 文本(字符串)
4 逻辑值(TrueFalse
8 Range 对象形式的单元格引用
16 错误值,如 #N/A
64 数值数组

InputBox 可用于显示简单对话框,方便用户输入要在宏中使用的信息。 对话框中有“确认”按钮和“取消”按钮。 如果选择“确认”按钮,InputBox 返回在对话框中输入的值。 如果选择“取消”按钮,InputBox 返回 False

如果 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")

此示例提示用户在 Sheet1 中选择单元格。 此示例使用 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。