如下函数
Public Sub SaveExcelFromMsFlex(pForm As Form,pFlex as MSFlexGrid)
End Sub放在类模块里面封装成类的方法,在编译时就会提示参数不能如此设置,当换成
Private Sub SaveExcelFromMsFlex(pForm As Form,pFlex as MSFlexGrid)
End Sub就没问题了。但是我实在需要放在类中,而且在类外部的所有工程都能访问到该方法,如何做呀!?

解决方案 »

  1.   

    先加载MSFlexGrid控件
    CLASS1:
    Option ExplicitPublic Sub SaveExcelFromMsFlex(pForm As Form, pFlex As MSFlexGrid)
        MsgBox pForm.Name
        MsgBox pFlex.Name
    End SubFORM1:Option ExplicitPrivate Sub Form_Click()
        Dim MyClass As Class1
        Set MyClass = New Class1
        Call MyClass.SaveExcelFromMsFlex(Me, Me.MSFlexGrid1)
    End Sub
      

  2.   

    我就是这样做的,但是在编译时就不通过呀!---------------------------
    Microsoft Visual Basic
    ---------------------------
    编译错误:Private 对象模块不能作为参数、公共过程的返回类型、公共数据成员或公共用户定义类型字段在公共对象中使用。
    ---------------------------
    确定   帮助   
    ---------------------------
      

  3.   

    对MSFlexGrid不是太了解,学习。
      

  4.   

    换成 pForm As Object 试试
      

  5.   

    换成OBJECT可以,但是有什么意义?我要用FORM 和MSFLEX 做参数
      

  6.   

    如果你想直接用VB的Form窗体之类的东东作为外部接口,那么很遗憾,不行,俺以前碰过壁!试想一下,别人用VC调你的接口,根本就不知道你接口里的Form是什么东西,该怎么办?解决的办法,Form可以作为类的一个属性类:class1
    Option ExplicitPrivate WithEvents mvarCmBtn As PictureBox               'Form
    Public Property Set CmBtn(ByVal vData As PictureBox)
        Set mvarCmBtn = vData
    End Property
    Public Property Get CmBtn() As PictureBox    Set CmBtn = mvarCmBtn
    End Property
      

  7.   

    TO DLYME
    很遗憾,还是报同样的错误。
      

  8.   

    TO PCWAK
    对不起,我没有说明白。
    我的工程是ACTIVE DLL工程,其中我的类是必须在类的外部可见的。
      

  9.   

    TO  PCWAK  
    对不起,我没有说明白。  
    我的工程是ACTIVE  DLL工程,其中我的类是必须在工程的外部可见的。