vvvv_vvvv 发表于 2011-4-29 10:34:54

请问这段VBS代码那错了????

dim a,b,c,msga,msgb
msga="请输入数值a"
a=inputbox(msga)
msgb="请输入数值b"
b=inputbox(msgb)
a=int(a)
b=int(b)
c=a*b
if a="" or b="" then
msgbox("a或b值不能为空")
else
msgbox(c)
endif

vvvv_vvvv 发表于 2011-4-29 10:41:42

最后的end if没有空格

如果我直接不输入按确定,代码还是报错。

vvvv_vvvv 发表于 2011-4-29 11:00:21

不输入值报STRING NULL,高手看看

renquande 发表于 2011-4-29 11:16:14

endif 变成end if即可(end和if加空格)

renquande 发表于 2011-4-29 11:27:48

dim a,b,c,msga,msgb,x,y
msga="请输入数值a"
x=inputbox(msga)
msgb="请输入数值b"
y=inputbox(msgb)
if a="" or b="" then
msgbox("a或b值不能为空")
else
a=Cint(x)
b=Cint(y)
c=a*b
msgbox(c)
end if


刚才没看详细,这样就没问题了

vvvv_vvvv 发表于 2011-4-29 11:34:08

CInt 函数可把表达式转换为整数(Integer)类型。

注释:值必须是介于 -32768 与 32767 之间的数字。

注释:CInt 不同于 Fix 和 Int 函数删除数值的小数部分,而是采用四舍五入的方式。 当小数部分正好等于 0.5 时, CInt 总是将其四舍五入成最接近该数的偶数。例如, 0.5 四舍五入为 0, 以及 1.5 四舍五入为 2.

vvvv_vvvv 发表于 2011-4-29 11:40:51

谢谢了
没理解为什么多 X Y值

renquande 发表于 2011-4-29 11:42:24

回复 6# vvvv_vvvv


   没看明白你什么意思,现在关键是有没有解决你的问题,有个结论性的东西,方便其他人看帖的时候有个结论

vvvv_vvvv 发表于 2011-4-29 11:48:33

程序主要是判断 a*b的值

错误判断为 A B值不为空或字符

renquande 发表于 2011-4-29 11:51:50

回复 9# vvvv_vvvv


   崩溃中,现在需要知道,这样能不能满足你的需求,还报错吗,结论性的东西

renquande 发表于 2011-4-29 11:52:40

测了一下,还是不对,不好意思

vvvv_vvvv 发表于 2011-4-29 11:53:26

dim a,b,c,msga,msgb,x,y
msga="请输入数值a"
a=inputbox(msga)
msgb="请输入数值b"
b=inputbox(msgb)
if a="" or b="" then
msgbox("a或b值不能为空或字符")
else
a=int(a)
b=int(b)
c=a*b/2
msgbox(c)
end if

vvvv_vvvv 发表于 2011-4-29 11:53:48

请问字符怎么判断啊,是不是有表达式

renquande 发表于 2011-4-29 11:55:59

dim a,b,c,msga,msgb,x,y
msga="请输入数值a"
x=inputbox(msga)
msgb="请输入数值b"
y=inputbox(msgb)
if x="" or y="" then
msgbox("a或b值不能为空")
else
a=Cint(x)
b=Cint(y)
c=a*b
msgbox(c)
end if

现在呢,再看一下

renquande 发表于 2011-4-29 11:56:47

我不是太熟悉VBS的语法,只是通过经验调试了一下

vvvv_vvvv 发表于 2011-4-29 12:07:15

这样对字符没有控制 如果输入 ABCD 或中文就会报错

vvvv_vvvv 发表于 2011-4-29 14:17:29

dim a,b,c,msga,msgb
Do
m=1
msga="请输入数值a"
a=inputbox(msga)
If IsNumeric(a) Then
a = CDbl(a)
If a<0 Then
   m = MsgBox("输入数值大于0!",5)
End If
Else
m = MsgBox("输入数值大于0!",5)
End If
If m = 2 Or m = 0 Then
WScript.Quit
End If
Loop While m=4
Do
m = 1
msgb="请输入数值b"
b=inputbox(msgb)
If IsNumeric(b) Then
b = CDbl(b)
If b<0 Then
   m = MsgBox("输入数值大于0!",5)
End If
Else
m = MsgBox("输入数值大于0!",5)
End If
If m = 2 Or m = 0 Then
WScript.Quit
End If
Loop While m=4
Randomize
c=a*b/2
msgbox(c)

偶爱台球 发表于 2011-5-4 14:21:50

dim a,b,c,msga,msgb
msga="请输入数值a"
a=inputbox(msga)
msgb="请输入数值b"
b=inputbox(msgb)
a=int(a)
b=int(b)
c=a*b   ----------------------------------------程序走到这就要算a*b的值了,你不输入肯定会报错的
if a="" or b="" then
msgbox("a或b值不能为空")
else
msgbox(c)
endif

jiazurongyu 发表于 2011-5-10 21:43:12

dim a,b,c,msga,msgb
....
a=Cint(a)
b=Cint(b)

hellenchen 发表于 2011-5-12 10:02:03

dim a,b,c,msga,msgb,y
y=0
do while y=0
msga="请输入数值a"
a=inputbox(msga)
msgb="请输入数值b"
b=inputbox(msgb)
if IsNumeric(a) and IsNumeric(b) then
a=int(a)
b=int(b)
c=a*b
msgbox(c)
y=1
else
msgbox("a或b值输入非数字型字符,请重新输入")
end if
loop
不知这个结果是不是你想要的
页: [1] 2
查看完整版本: 请问这段VBS代码那错了????