VB变量问题,200分在线等,急呀!

来源:百度知道 编辑:UC知道 时间:2024/09/26 03:31:11
我是初学,会VB的一看就明白,我找了好久好久没找出来问题出在哪里
Sub main()
Dim rx
KeyDownH "RArrow"
Delay 1000
KeyUpH "RArrow"
Delay 100
Call xzzb
Msgbox rx
SuDu=(rx-0)/1000
End Sub

Sub xzzb()
FindPic 735,148,755,163,"D:\zbb\21.bmp",0.7,Xzb,Yzb
If xzb<>-1 Then
rx=0
End If

FindPic 735,148,755,163,"D:\zbb\22.bmp",0.7,Xzb,Yzb
If xzb<>-1 Then
rx=1
End If

FindPic 735,148,755,163,"D:\zbb\23.bmp",0.7,Xzb,Yzb
If xzb<>-1 Then
rx=2
End If

FindPic 735,148,755,163,"D:\zbb\24.bmp",0.7,Xzb,Yzb
If xzb<>-1 Then
rx=3
End If

FindPic 735,148,755,163,"D:\zbb\25.bmp",0.7,Xzb,Yzb
If xzb<>-1

原因楼上已经说了~~
最小的修改是这样:

Sub xzzb()
改成
Sub xzzb( rx )
就行了~~

另外说一句,您的代码还存在诸多问题~~您慢慢看书就晓得了~~

你在main里面定义的rx是局部变量
只在main里有效
xzbb中使用rx时,实际是vb自动定义了一个xzbb中的局部变量rx
此rx非彼rx,你在main中自然取不到他的值

解决方法1,在主程序中声明rx为public
public rx
不过其实这样做并不好,因为在你的程序结束之前rx会一直存在并且占用内存,所以不环保

建议你用解决办法2,将xzbb声明为function,function可以有返回值
你只要在function的最后
return rx
主程序中就可以用
RxInMain = xzbb()的方式获得xzbb的返回值了

你Sub xzzb() 是一个 过程

过程是没有返回值的

你可以传入一个变量给过程
让过程 处理变量
把 Call xzzb 改为Sub xzzb(rx)
Sub xzzb() 改为 Sub xzzb(ByRef rx)
可以达到你的目的

将xzzb用函数代替呢?
function xzzb ()
……
return rx

end function

在main里将Call xzzb
改成rx = xzzb()

试试

将Sub main() 改成void main() 试试