VBScript error 800A0401 Expected statement行1字符1报错问题求解
报错原因
触发错误代码800A0401的核心原因是你使用了VBScript的内置保留关键字Type作为自定义变量名,WSH解析代码时会将首行开头的Type识别为语法关键字而非你定义的变量,无法匹配后续的赋值逻辑,因此抛出「Expected statement(预期语句)」的错误。
除此之外代码还存在两处可引发异常的问题:
- 第2行的条件判断写法不符合VBS语法规则:
if type = not "m" or "s" or "a" or "d" or "M" or "S" or "A" or "D"属于错误写法,VBS中每个或判断的条件都需要单独声明完整,且逻辑非Not的优先级高于等于判断,你当前的写法逻辑完全不成立。 - InputBox返回的结果为字符串类型,直接执行加法操作时会变成字符串拼接而非数值计算,和预期功能不符。
修复方法
- 将所有自定义变量
type替换为非保留关键字,比如calcType - 修正条件判断逻辑,可以用
UCase()函数将输入转为大写后判断,减少冗余的判断分支 - 将输入的两个运算数转为数值类型,避免类型匹配错误
修复后的完整代码如下:
calcType = inputbox("请选择运算类型:m=乘法,d=除法,a=加法,s=减法") If Not (UCase(calcType) = "M" Or UCase(calcType) = "S" Or UCase(calcType) = "A" Or UCase(calcType) = "D") Then msgbox "你没有选择有效的运算类型" ElseIf UCase(calcType) = "M" Then input1 = CDbl(inputbox("你选择了乘法,请输入第一个运算数:")) input2 = CDbl(inputbox("请输入第二个运算数:")) output = input1 * input2 msgbox "计算结果:" & input1 & " " & chrw(0215) & " " & input2 & " = " & output ElseIf UCase(calcType) = "D" Then input1 = CDbl(inputbox("你选择了除法,请输入被除数:")) input2 = CDbl(inputbox("请输入除数:")) output = input1 / input2 ' 如需整除可将/替换为\ msgbox "计算结果:" & input1 & " " & chrw(247) & " " & input2 & " = " & output ElseIf UCase(calcType) = "A" Then input1 = CDbl(inputbox("你选择了加法,请输入第一个运算数:")) input2 = CDbl(inputbox("请输入第二个运算数:")) output = input1 + input2 msgbox "计算结果:" & input1 & " + " & input2 & " = " & output ElseIf UCase(calcType) = "S" Then input1 = CDbl(inputbox("你选择了减法,请输入第一个运算数:")) input2 = CDbl(inputbox("请输入第二个运算数:")) output = input1 - input2 msgbox "计算结果:" & input1 & " - " & input2 & " = " & output End If
内容的提问来源于stack exchange,提问作者Khizar Caliphate
相关产品推荐
相关产品推荐

