我正在做一些编程,尝试运行该错误消息。我的代码:
MsgBox ("hi")
sleep (2)
MsgBox ("you ok" vbYesNo, "how are you?")
Select Case result
Case vbYes,
MsgBox ("that's good!")
Case vbNo, MsgBox ("sorry to hear that.")
End Select
第3行
字符:18
错误:预期为')'来源:Microsoft VBScript编译错误。
答案 0 :(得分:2)
问题是因为错误表明您有编译问题,但是在其余示例代码中,您还有其他问题需要纠正。
MsgBox()
中缺少参数语法:
第3行
字符:18
错误:预期为')'来源:Microsoft VBScript编译错误。
是因为函数MsgBox()
期望用逗号分隔参数,但是缺少"you ok"
之后的参数分隔符,导致编译器引发异常。
调用Sub时不能使用括号:
在调用不返回括号的值的过程时,会导致传递给该过程的多个参数;
Microsoft VBScript编译错误:调用Sub时不能使用括号
对此有一个警告,就是如果它只是一个参数,它将不会编译失败,但这不是因为它接受一个参数,而是因为它将方括号视为参数的一部分,而不是过程的一部分,所以< em>(埃里克·利珀特(Eric Lippert)在his blog中详细讨论了这一点);
MsgBox("Hi") 'Will work
这相当于写作;
Call MsgBox(("Hi")) 'Note the extra brackets
这可能有点令人困惑,因此当涉及多个参数时,您可能会认为这没关系;
MsgBox("you ok", vbyesno, "how are you?") 'This will error
但是,由于括号现在表示参数括号,它变得无效并引发编译错误。为避免这种情况,您可以做三件事;
删除括号
MsgBox "you ok", vbyesno, "how are you?"
返回值(如果该过程可以返回值)
result = MsgBox("you ok", vbYesNo, "how are you?")
当您在下一行检查result
的值时,这将是正确的选项,因为它result
将包含在其中单击vbYes
或vbNo
的结果MsgBox()
函数。
使用Call
语句为过程调用添加前缀
Call MsgBox("you ok", vbYesNo, "how are you?")
语法错误:
Microsoft VBScript编译错误:语法错误
这归结为Case
参数后的尾部逗号,只需删除逗号即可编译代码。
Select Case result
Case vbYes
Call MsgBox("that's good!")
Case vbNo
Call MsgBox("sorry to hear that.")
End Select
Sleep
持续时间:
在示例代码等待0.002秒的时刻,Sleep()
函数期望用毫秒而不是秒表示的值。等待2秒钟(我假设是故意的)使用;
Call Sleep(2000)