一个Sub中的变量a,到了另一个Function中就没值了,如何解决这个问题?

解决方案 »

  1.   

    你定义个模块级的变量不就行了?
    或者你把这个变量的值以参数的形式传到function里
      

  2.   

    把变量a传到Function的函数中去,即在function中定义一参数接收。
      

  3.   

    把变量a传到Function的函数中去,即在function中定义一参数接收。
      

  4.   

    这种情况传值给function也可以
    sub test()
      dim a as string 
      dim r as boolean=fn1(a)
      .....end sub 
    function fn1( byval a as string) as booleanend function
      

  5.   

    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
      

  6.   

    这是个OCX控件,问题是变量A的值是随时变化的,我在Private Sub UserControl_Initialize()中定义的A的值,是可用的,而在一个Private Sub Command77_Click()中定义的A,却无值。我如何才能让在Private Sub Command77_Click()中定义的A,也有值?
      

  7.   

    不一定非要用模块级或者全局变量。也可以用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
      

  8.   

    更正,是让在Private Sub Command77_Click()中定义的A,在全局范围内也有值。
      

  9.   

    把变量a传到Function的函数中去,即在function中定义一全局变量接收。
      

  10.   

    其实你要改成把一个function传到一个sub才行。function是有返回数值送给sub的用public宣告就可以了,你这想法怎么就是反的呢?
      

  11.   

    "这是个OCX控件":
    变量和控件是什么关系?
    "问题是变量A的值是随时变化的":
    值不变化那还是变量吗?如果想取控件的值就直接拿控件取,干嘛还用变量?
    你把问题问清楚可以吗?累死我们了。
      

  12.   

    定義成公用變量
    public a as integer