Board logo

标题: [问题求助] [已解决]VBS脚本select case true判断时,怎么处理空值? [打印本页]

作者: 踏沙行    时间: 2021-2-14 16:15     标题: [已解决]VBS脚本select case true判断时,怎么处理空值?

  1. a=InputBox ("请输入内容")
  2. Select Case True
  3.     Case a>0 and a<10
  4.         MsgBox "你输入的是0-9"   
  5.     Case a>=10 and a<20
  6.         MsgBox "你输入的是10-20"   
  7.     Case a=""
  8.         MsgBox "你没有输入"         
  9.     Case else  
  10.         MsgBox "输入超出范围"   
  11. End Select   
复制代码
当弹出输入框时,输入任何值都可以正常判断
但如果不输入,直接按回车和ESC键,会提示出错。出错语句指向"Selece Case True"一句
作者: flashercs    时间: 2021-2-14 18:23

本帖最后由 flashercs 于 2021-2-14 18:41 编辑
  1. a=InputBox ("请输入内容")
  2. WSH.Echo TypeName(a) & " : """ & a & """"
  3. Select Case True
  4.     Case a=""
  5.         MsgBox "你没有输入"  
  6.     Case Not ISNumeric(a)      
  7.         MsgBox "你输入的非数字"
  8.     Case a>0 and a<10
  9.         MsgBox "你输入的是0-9"   
  10.     Case a>=10 and a<20
  11.         MsgBox "你输入的是10-20"   
  12.     Case else  
  13.         MsgBox "输入超出范围"   
  14. End Select   
复制代码

作者: 踏沙行    时间: 2021-2-15 09:59

回复 2# flashercs
谢谢,有点疑惑的是:
为什么case a="" 要放在第一句才可以,而放在后面却不行呢?
作者: flashercs    时间: 2021-2-15 10:20

回复 3# 踏沙行


    InputBox返回的数据类型是Empty 或 String,当是String类型时,string与number类型进行比较,会先把string变成number后再比较,但是转换时空字符串""或无法转换为数值的字符串就会throw exception。因此a>0不能放前面。
作者: 踏沙行    时间: 2021-2-15 14:41

回复 4# flashercs

非常感谢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2