'模块
Public Type RGBQUAD
rgbBlue As Byte
rgbGreen As Byte
rgbRed As Byte
rgbReserved As Byte
End Type '类模块
Public Function x(ByRef g() As RGBQUAD)
Erase g
ReDim g(10)
End Function'窗体
Private Sub Form_Load()
Me.Show
Dim a As Class1
Set a = New Class1
Dim h() As RGBQUAD
a.x h()
MsgBox UBound(h)
End Sub现在类模块那个调用的public报错,private才行,可我又必须用public,因为要外部调用并导入一个rgbquad数组,怎么办啊?

解决方案 »

  1.   

    在类模块里面,用户定义类型不能作为参数传递。但在标准模块里面可以:
    '标准模块
    Option ExplicitPublic Type RGBQUAD
        rgbBlue As Byte
        rgbGreen As Byte
        rgbRed As Byte
        rgbReserved As Byte
    End Type
    Public Function X(ByRef g() As RGBQUAD)
        Erase g
        ReDim g(10)
    End Function'窗体模块
    Option ExplicitPrivate Sub Form_Load()
        Me.Show
        Dim h() As RGBQUAD
        Call X(h())
        MsgBox UBound(h)
    End Sub