Public bbb as Integer;
Public ccc() as string;Public Sub aaa(bbb,ccc)
有两个疑问,首先bbb和ccc是不是一定要是public?
其次ccc是个动态数组,这样调用好像不成功?请大家指教谢谢

解决方案 »

  1.   

    程序便宜错误,为什么不可以呢?
    像上面的例子中,ccc应该怎么样才能传进来呢?
    arrays not allowed as public members of object module
      

  2.   

    Public Sub aaa(ByVal bbb As Integer, ByRef ccc() As String)
    MsgBox bbb
    MsgBox ccc(2)End SubPrivate Sub Form_Load()
    Dim ARR(5) As String
    For i = 0 To 5
    ARR(i) = i
    Next
    aaa 120, ARR
    End Sub
      

  3.   

    Private ccc() As StringPrivate Sub Test()
        Dim bbb As Integer
        Call aaa(bbb, ccc)
    End SubPublic Sub aaa(bbb As Integer, ccc() As String)
        ReDim ccc(1)
        ccc(0) = "little"
        ccc(1) = "mou"
        Debug.Print "bbb=" & bbb
        Debug.Print "ccc(0)=" & ccc(0)
        Debug.Print "ccc(1)=" & ccc(1)
    End Sub首先bbb和ccc是不是一定要是public? 
    ###不一定。你可以像上面这个例子里这样定义ccc为模块级的private变量,也可以像bbb一样定义为过程级的变量。其次ccc是个动态数组,这样调用好像不成功?
    ###看我给你的例子,动态数组在使用之前要redim一下 
      

  4.   

    Public bbb as Integer; 
    Public ccc() as string; 
    都是多余的,它们和Public Sub aaa(bbb,ccc) 根本就是两码事,尽管名称相同
      

  5.   

    这个是基础问题,VB过程中的参数,有二种传递方式:
    一是传址(byref),这是默认的方式,这种情况下,必须声明变量的类型,无论是public还是private或者是dim都可以。要注意的是,如果你在过程中修改了这个变量,会改变源变量的值....
    二是传值(byval),这种情况下,可以不指定变量类型,但这个值至少必须可以和你参数类型作隐式的转换,过程中对其的修改,不会改变源变量如果参数是数组,那一定是byref方式,必须声明同类型的数组变量...另外,写代码要有好习惯,要用Option Explicit强制声明变量...
      

  6.   

    我一般喜欢用集合或Dictionary 对象来代替数组。
      

  7.   

    这个是基础问题,VB过程中的参数,有二种传递方式: 
    一是传址(byref),这是默认的方式,这种情况下,必须声明变量的类型,无论是public还是private或者是dim都可以。要注意的是,如果你在过程中修改了这个变量,会改变源变量的值.... 
    二是传值(byval),这种情况下,可以不指定变量类型,但这个值至少必须可以和你参数类型作隐式的转换,过程中对其的修改,不会改变源变量 如果参数是数组,那一定是byref方式,必须声明同类型的数组变量... 另外,写代码要有好习惯,要用Option Explicit强制声明变量...