ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何解决InputBox会出现的类型不匹配?

如何解决InputBox会出现的类型不匹配?

作者:绿色风 分类: 时间:2022-08-17 浏览:164
楼主
amulee
Q:如何解决InputBox会出现的类型不匹配?
A:如以下代码,当什么都不输入直接点击“确定”或者点击“取消”时会发生“类型不匹配”的情况。
  1. Sub 错误1()
  2.     Dim i As Integer
  3.     i = InputBox("输入数值", "请输入数值")
  4.     '由于InputBox返回的是String类型的数值,因而出现类型不匹配
  5.     Stop
  6. End Sub


原因在于InputBox函数返回的是String类型的数值,虽然输入数字的时候VBA会自动进行转换,但是当遇到什么都不输入直接点击“确定”或者点击“取消”时,此时该函数返回空字符,它却无法通过VBA的自动转换转换成数值。可以通过以下几个方案来解决。

方法1:定义变量为String类型
  1. Sub Test1()
  2.     Dim i As String
  3.     i = InputBox("输入数值", "请输入数值")
  4.     Stop
  5. End Sub


方法2:若仍然需要使用Integer类型的变量,可以通过VAL函数对InputBox的值进行强制转换。
  1. Sub Test2()
  2.     Dim i As Integer
  3.     i = Val(InputBox("输入数值", "请输入数值"))
  4.     Stop
  5. End Sub



Application.InputBox与InputBox类似,不过当点击取消时,它返回的是逻辑值False。请运行下列程序点击取消测试:
  1. Sub Test3()
  2.     Dim i
  3.     i = Application.InputBox("输入数值", "请输入数值")
  4.     Stop
  5. End Sub


很多时候,如果需要强制用户输入数值,则可以采取以下程序:
  1. Sub Test4()
  2.     Dim i
  3.     i = InputBox("输入数值", "请输入数值")
  4.     Do While Len(i) = 0
  5.         MsgBox "您未输入,请重新输入"
  6.         i = InputBox("输入数值", "请输入数值")
  7.     Loop
  8. End Sub
2楼
wise
学习,这个可没有注意
3楼
snowangle007

学习了,阿木老师太厉害了!

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap