这种情况传值给function也可以 sub test() dim a as string dim r as boolean=fn1(a) .....end sub function fn1( byval a as string) as booleanend function
Private Sub Command1_Click() Dim y As Double getx2 8, y MsgBox getx3(y) End SubSub getx2(ByVal x As Double, ByRef y As Double) Dim a As Double a = x ^ 2 y = a End Sub Function getx3(ByVal x As Double) getx3 = (Sqr(x)) ^ 3 End Function
这是个OCX控件,问题是变量A的值是随时变化的,我在Private Sub UserControl_Initialize()中定义的A的值,是可用的,而在一个Private Sub Command77_Click()中定义的A,却无值。我如何才能让在Private Sub Command77_Click()中定义的A,也有值?
不一定非要用模块级或者全局变量。也可以用byref的方式将所需要的东西传递出来Option ExplicitPrivate Sub Command1_Click() Debug.Print TestFun End SubPrivate Function TestFun() As Integer Dim value As Integer Call TestSub(value) '调用sub,其中value为引用参数 TestFun = value '返回值 End FunctionPrivate Sub TestSub(ByRef test As Integer) Dim temp As Integer '这是一个局部变量 temp = 100 '给局部变量赋值 test = temp '将局部变量值赋予引用参数,完成变量传递 End Sub
更正,是让在Private Sub Command77_Click()中定义的A,在全局范围内也有值。
或者你把这个变量的值以参数的形式传到function里
sub test()
dim a as string
dim r as boolean=fn1(a)
.....end sub
function fn1( byval a as string) as booleanend function
Dim y As Double
getx2 8, y
MsgBox getx3(y)
End SubSub getx2(ByVal x As Double, ByRef y As Double)
Dim a As Double
a = x ^ 2
y = a
End Sub
Function getx3(ByVal x As Double)
getx3 = (Sqr(x)) ^ 3
End Function
Debug.Print TestFun
End SubPrivate Function TestFun() As Integer
Dim value As Integer
Call TestSub(value) '调用sub,其中value为引用参数
TestFun = value '返回值
End FunctionPrivate Sub TestSub(ByRef test As Integer)
Dim temp As Integer '这是一个局部变量
temp = 100 '给局部变量赋值
test = temp '将局部变量值赋予引用参数,完成变量传递
End Sub
变量和控件是什么关系?
"问题是变量A的值是随时变化的":
值不变化那还是变量吗?如果想取控件的值就直接拿控件取,干嘛还用变量?
你把问题问清楚可以吗?累死我们了。
public a as integer