VB中判断语句问题,请教高手

来源:百度知道 编辑:UC知道 时间:2024/06/29 22:16:41
程序如下
For i = 1 To r_pass(2) - 1
If r2_ex_h(i) < r2_ex_h(i + 1) Then
myexit = MsgBox("Entrance Thickness Less than Exiting Thickness, Please Check!", vbExclamation + vbOKOnly, "Warning")
If myexit = vbOKOnly Then
End
End If
Exit For
End If
Next

判断两个数r2_ex_h(i)与r2_ex_h(i+1)的大小,程序走到i=2时出错
r2_ex_h(2)=113,r2_ex_h(3)=82
VB判断 r2_ex_h(i) < r2_ex_h(i + 1) 为真,不太明白是什么原因造成的。而当判断条件改为(r2_ex_h(i) - r2_ex_h(i + 1)《 0)时,为假。
找了很长时间没找到毛病在哪,请教高手
是(r2_ex_h(i)-r2_ex_h(i+1) < 0) 打错了

r2_ex_h(i)是Text控件数组,分别是147 113 82 56 39

r_pass(2)的赋值是通过ComboBox控件的选项给的,这里为5

"r2_ex_h(i) < r2_ex_h(i + 1) 为真,
(r2_ex_h(i) - r2_ex_h(i + 1)< 0 为假的话,
那么只可能两个都是负数" 我通过做断点查过这两个数值,分别是113 和 82,应该不是负数
我想要的结果是前面比后面的数小,出现错误信息;而实际情况是113 > 82, 仍然

同上,至少把r_pass()、r2_ex_h() 的定义和赋值部分贴出来吧

text控件数组....两个text不加任何转换比较就是逐字比较文本,113和82,8比1大,因此82比113大。用相减的时候VB隐含转换string为数值,因此正常。所以说VB的隐式转换害死人,编程习惯会变坏。
If r2_ex_h(i) < r2_ex_h(i + 1) Then
改成 If val(r2_ex_h(i).text) < val(r2_ex_h(i + 1).text) then

没有错,我试验一下是可以正常运行的,要不你把原程式相关的代码发出来,或方便的话贴出全部代码?

我看着你这些代码都渗的慌

你的片段真的很难判断
如果可以的话,希望能贴多一些,才好帮你更快的找出问题

r2_ex_h(i) < r2_ex_h(i + 1) 为真,
(r2_ex_h(i) - r2_ex_h(i + 1)< 0 为假的话,
那么只可能两个都是负数

还有
If myexit = vbOKOnly Then
End
End If
可以直接用End,因为你前面是OKOnly,只有ok一个按钮

下标出错了,把r2_ex_h(i1) < r2_ex_h(i+1)改成r2_ex_h(i-1) < r2_ex_h(i).就应该可以了,如下:

For i = 1 To r_pass(2)-1
If r2_ex_h(i-1) < r2_ex_h(i) Then
myexit = MsgBox("Entrance Thickness Less than Exiting Thickness, Please Check!", vbExclamation + vbOKOnly, "Warning")
If myexit = vbOKOnly Then
End
End If
Exit For
End If