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 | 此输入框使用的帮助文件名。 如果有 HelpFile 和 HelpContextID 参数,对话框中会显示帮助按钮。 |
HelpContextID | 可选 | Variant | HelpFile 中帮助主题的上下文 ID 号。 |
Type | 可选 | Variant | 指定返回的数据类型。 如果省略此参数,则对话框返回文本。 |
返回值
Variant
备注
下表列出了可以在 Type 参数中传递的值。 可以是一个值,也可以将多个值相加。 例如,对于可接受文本和数字的输入框,将 Type 设置为 1 + 2。
值 | 说明 |
---|---|
0 | 公式 |
1 | 数字 |
2 | 文本(字符串) |
4 | 逻辑值(True 或 False) |
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 支持和反馈,获取有关如何接收支持和提供反馈的指南。