有两种方法可以实现将子程序中的值传递出来。
(1)利用模块级或全局变量。例如
Option Explicit
' r是一个模块级变量
Dim r As Integer
Sub Add(ByVal x As Integer, ByVal y As Integer)
'将计算结果存放到 r
r = x + y
End Sub
Private Sub Form_Click()
'调用子程序Add
Call Add(10, 20)
'获取计算结果并打印
Print r
End Sub
(2)用 ByRef 参数实现计算结果回传。 例如
Option Explicit
'Add子程序利用 ByRef r As Integer 回传值
Sub Add(ByRef r As Integer, ByVal x As Integer, ByVal y As Integer)
r = x + y
End Sub
Private Sub Form_Click()
Dim r As Integer
'调用子程序Add,计算结果回传到变量 r
Call Add(r, 10, 20)
'打印结果
Print r
End Sub
VB的子程序的参数,分两种:
用关键字Byval 声明的是传值参数
用关键字ByRef 声明的是传址参数
例如子程序 aaaa:
sub aaaa(Vyval a as integer,byref b as integer)
a=99
b=100
End sub
现在去调用它如下:
Dim x as integer,y as integer
x=1
y=2
Print x,y
aaaa x,y
Print x,y
可以,看到两次输出的结果x相同,y不同
y把子程序的结果传递出来了
当然,编写函数可以把结果传递出来,但是函数名只可以传递一个结果,而利用ByRef可以传递多个结果.
Function aaaa() as Integer
aaa=2 '这里是返回值,也就是 左侧是函数名,右侧是你想要返回的值
end Function
VB中函数的参数都是默认传址的,也就是说你主程序里的参数在子过程里面的变化都会反映到主程序中去,也可以通过函数的返回值来使主程序获取子程序里面产生的值
如果子程序也是自己写的那就用IPC具体请百度“进程间通信”
如果子程序不是你自己写的那你只能在子程序中找出你要取值的指针从内存中读出来了