inputBox 与 Application.inputBox 的用法与区别。

在输入对话框在VBA中有两种形式,分别是:

  • InputBox
  • Expression.InputBox

二者在大致功能上基本相同,个人认为二者重点差异为:

  • 后者有 Type 参数,可以限制输入类型,同时可以引用单元格 ;
  • 二者输入时, 空值取消 的返回值不同。

二者语法分别如下:

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

Part必需/可选数据类型说明
Prompt必需String字符串表达式在对话框中显示为消息。 prompt 的最大长度约为 1024 个字符,具体取决于所使用的字符的宽度。 如果_prompt_包含多行, 则可以使用回车符 (chr(13))、换行符 (chr(10)) 或回车换行符组合 ((chr (13) & ((chr (13)) 来分隔行。 ((chr(13) (**** 每个行的 Chr (10))。
Title可选Variant对话框标题栏中显示的字符串表达式。 如果省略 title,则标题栏中将显示应用程序名称。
Default可选Variant文本框中显示的字符串表达式,在未提供其他输入时作为默认响应。 如果省略了 default,文本框将显示为空。
XPos可选Variant指定对话框的左边缘与屏幕的左边缘的水平距离(以缇为单位)的数值表达式。 如果省略了 xpos,对话框将水平居中。
YPos可选Variant指定对话框的上边缘与屏幕的顶部的垂直距离(以缇为单位)的数值表达式。 如果省略了 ypos,对话框将位于屏幕垂直方向往下大约三分之一的位置。
Helpfile可选Variant用于标识帮助文件的字符串表达式,前者用于为对话框提供上下文相关的帮助。 如果提供 helpfile,则也必须提供 context。
Context可选Variant帮助上下文数值的数值表达式,该数值由帮助作者为相应的帮助主题分配。 如果提供 context,则也必须提供 helpfile。

expression.InputBox ( Prompt, [Title], [Default], [Left], [Top], [HelpFile], [HelpContextID], [Type] )
expression:表示 Application 对象的变量。

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

其中,参数 Type 可以选择以下值:
注: 可以是一个值,也可以将多个值相加。 例如,对于可接受文本和数字的输入框,将 Type 设置为 1 + 2。

说明
0公式
1数字
2文本(字符串)
4逻辑值(True 或 False)
8Range 对象形式的单元格引用
16错误值,如 #N/A
64数值数组
  • 如果 Type = 0,InputBox 返回文本格式的公式(例如,=2*PI()/360)。
    只要公式中有引用,就会以 R1C1样式 引用的形式返回。 (ConvertFormula 可用于转换引用样式。)
    注: 在微软的官方介绍中,公式引用形式是以 A1样式 返回,但是实测效果入下,我所使用的是 Excel 2016 订阅版。
Sub 测试1()
  Dim Val
  Val = Application.InputBox("选择单元格", Type:=0)
  MsgBox Val
End Sub

测试1效果

  • 如果 Type = 8,InputBox 返回 Range 对象。 必须使用 Set 语句,将结果分配给 Range 对象。
    注: 如果不使用 Set 语句,此变量就会被设置为区域中的值,而不是 Range 对象本身。如下面的示例所示。
Sub 测试2()

  Dim Val
  
  Set Val = Application.InputBox("选择单元格", Type:=8)
  MsgBox TypeName(Val)
  
  Val = Application.InputBox("选择单元格", Type:=8)
  MsgBox TypeName(Val)
  
End Sub

测试2效果如图


InputBox 与 Application.InputBox 的 空值取消 时的返回值。

  • inputBox 输入 空值 或点击 取消 时,均返回空值。
  • application.InputBox 输入 空值 时返回空,点击 取消 时返回 False

以下两段代码分别可以用于判断用户当前执行了输入值、输入空值、点击取消(关闭)

Sub 测试3()
  Dim Key
  
  Key = InputBox("请输入关键词", "这是 InputBox 测试")
  If StrPtr(Key) = 0 Then
    MsgBox "点击了取消或是直接关闭了窗口。"
  ElseIf StrPtr(Key) <> 0 Then
    If Len(Key) = 0 Then
      MsgBox "输入了空白值。"
    ElseIf Len(Key) <> 0 Then
      MsgBox "输入的Key值为:" & Key
    End If
  End If
end sub
 Sub 测试4()
  Dim Key
  
  Key = Application.InputBox("请输入关键词", "这是一个测试")
  If Key = "False" Then                      'False 加双引号的原因请见后文
    MsgBox "点击了取消或是直接关闭了窗口。"
  ElseIf Key = "" Then
    MsgBox "输入了空白值。"
  Else
    If Len(Key) <> 0 Then
      MsgBox "输入的Key值为:" & Key
    End If
  End If
End Sub
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值