在输入对话框在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 可选 Variant HelpFile 中帮助主题的上下文 ID 号。
Type 可选 Variant 指定返回的数据类型。 如果省略此参数,则对话框返回文本。

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

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

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


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

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

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

Sub 测试3()Dim KeyKey = InputBox("请输入关键词", "这是 InputBox 测试")If StrPtr(Key) = 0 ThenMsgBox "点击了取消或是直接关闭了窗口。"ElseIf StrPtr(Key) <> 0 ThenIf Len(Key) = 0 ThenMsgBox "输入了空白值。"ElseIf Len(Key) <> 0 ThenMsgBox "输入的Key值为:" & KeyEnd IfEnd If
end sub
 Sub 测试4()Dim KeyKey = Application.InputBox("请输入关键词", "这是一个测试")If Key = "False" Then                      'False 加双引号的原因请见后文MsgBox "点击了取消或是直接关闭了窗口。"ElseIf Key = "" ThenMsgBox "输入了空白值。"ElseIf Len(Key) <> 0 ThenMsgBox "输入的Key值为:" & KeyEnd IfEnd If
End Sub

inputBox 与 Application.inputBox 的用法与区别。相关推荐

  1. VBA,使用inputbox() 和 application.inputbox() ,以及参数按次序,按名称传递的方式的差别

    1 inputbox()  和 application.inputbox() 的语法和功能差别 1.1 inputbox() 基本语法 InputBox(prompt[, title] [, defa ...

  2. vba 判断文本框内容是否为空_Excel/VBA编程用户交互函数(二)——InputBox()函数和inputbox方法...

    在上一篇文章Excel/VBA编程用户交互函数(一)--msgbox()函数中,小伙伴们了解了消息弹窗的知识,今天我们来学习一下Excel/VBA编程的第二个用户交互函数Inputbox()函数及In ...

  3. Spark中CheckPoint、Cache、Persist的用法、区别

    Spark中CheckPoint.Cache.Persist 大家好,我是一拳就能打爆A柱的猛男 这几天看到一套视频<尚硅谷2021迎新版大数据Spark从入门到精通>,其中有关于检查点( ...

  4. @ini_get php,php中get_cfg_var()和ini_get()的用法及区别_php技巧_脚本之家

    本文实例讲述了php中get_cfg_var()和ini_get()的用法及区别.分享给大家供大家参考.具体分析如下: php里get_cfg_var()和ini_get()都是取得配置值的函数,当你 ...

  5. return true Java_[Java教程]js中return,return true,return false的用法及区别

    [Java教程]js中return,return true,return false的用法及区别 0 2015-11-16 23:00:03 1.语法及返回方式 ①返回控制与函数结果 语法为:retu ...

  6. 【Java学习笔记之二十九】Java中的equals和==的用法及区别

    Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String(&quo ...

  7. python ord()与chr()用法以及区别

    python ord()与chr()用法以及区别 原文:http://blog.csdn.net/yulock/article/details/52904035 ord()函数主要用来返回对应字符的a ...

  8. matlab ezplot fplot,【转】Matlab plot fplot ezplot用法与区别

    [转]Matlab plot fplot ezplot用法与区别 (2012-04-19 20:26:00) 标签: matlab fplot ezplot 数学函数 曲线 杂谈 函数plot 是绘制 ...

  9. ASP.NET中application对象的用法(面试题)

    ASP.NET中application对象的用法 本文导读:Application对象是HttpApplicationState类的一个实例,Application状态是整个应用程序全局的.Appli ...

  10. TF:tensorflow框架中常用函数介绍—tf.Variable()和tf.get_variable()用法及其区别

    TF:tensorflow框架中常用函数介绍-tf.Variable()和tf.get_variable()用法及其区别 目录 tensorflow框架 tensorflow.Variable()函数 ...

最新文章

  1. VS2008正式版创建silverlight项目失败的解决办法
  2. SpringCloud组件 源码剖析:Eureka服务注册方式流程全面分析
  3. java正三角形程序怎么写,java实现正三角形和到正三角形
  4. 代码收藏——js+asp 的屏幕滚动脚本
  5. 使用Redis Stream来做消息队列和在Asp.Net Core中的实现
  6. 在无头单链表的一个非头节点前插入一个节点(C语言)
  7. Python---String 字符串类型
  8. OpenCV2计算机编程手册(二)基于类的图像处理
  9. XStream 解析 XML 深入剖析
  10. 计算机测色配色应用,计算机测配色方法及注意事项
  11. Maven 阿里云配置 此 MAVEN 配置地表最强不接受反驳
  12. Puppet原理及基础配置应用
  13. 淘口令是什么?淘口令怎么在电脑上打开?【已解决】
  14. 使用geotools构建特殊的多边形
  15. wordpress 文章插入的超链接访问不了
  16. eclipse创建maven项目没有maven dependence
  17. 嵌入式–滑动平均滤波算法
  18. 小白的测试人生(二)——软件测试行业发展现状及前景
  19. linux 安装php8.1 ZipArchive和libzip最新版扩展安装
  20. 自动化运维批量管理saltstack

热门文章

  1. mysql数据库character_关于MySQL如何修改character
  2. 《大型分布式网站架构设计与实践》
  3. 极坐标弧长积分公式简单理解 极坐标求面积的公式,dθ 弧长积分公式,rd​原理; 极坐标弧积分
  4. huobi API使用经验整理
  5. matlab求解vrp问题遗传算法,vrp问题(遗传算法vrp问题)
  6. Char类的常用方法及说明
  7. 一块蛋清皂,把毛孔洗得一干二净
  8. 终于考过了驾照考试,现在就=驾照下来了
  9. 那些年我们踩过的坑——Java中Date夏令时日期转换不一致问题
  10. java 传参数报文给and_技术岛-技术改变生活