我在别的工程中创建了一个类要移到另外的工程中使用 其中该类中的 主要代码如下:
Public Type data1
    stationNo As Integer
              。
               。
              。
end type
Public Function BlockSrting(dataString As String) As data1



end function新的工程中我添加了这个类文件
调用代码如下:
dim c as new class1
dat = c.BlockSrting("asdf")
 
出错请各位大哥给个解释啊   怎么再能用好这种类呢?  急  在线等

解决方案 »

  1.   

    cannot define a public user-defined type within aprivate object module
    错误提示
    大哥
      

  2.   

    把类中的两个public都改成private 提示 、
    method or data member not found
    fuction 仍用 public修饰
    提示
    private enum and user defined types cannot be used as parameters or return types for public procedures,public data members, or fields of public user defined types
      

  3.   

    说明  在原来的项目中都用public是可以通过的,新项目中我把原来的类文件添加到其中,就出了问题求各位牛哥  解释
      

  4.   

    这个你用建DLL类的工程中就可以用,直接一般的VB EXE工程中是不行的
      

  5.   

    我也试着将代码复制到基础模块module中,却不知道怎么访问其中的方法
      

  6.   

    哦哦,是这样啊  以前的项目确实是.ctl的  那如果要在EXE工程中引用怎么弄呢?或者怎么样才能在各种工程中引用?
    还有我在EXE工程中使用module复制后  引用代码如下:
    Dim d As data1//这个能找到
    d = BlockString("asdfad")//这个module中的方法确找不到为什么呢?
    都是用public声明的
      

  7.   

    你把
    Public Type data1
      stationNo As Integer
      。
      。
      。
    end type放到公共模块(标准模块)中定义就行了。
      

  8.   


    私有类中(在同一个工程中的类,都是私有类)不能定义公有的用户数据类型,必须将
    Public Type data1
      stationNo As Integer
      。
      。
      。
    end type改为私有的,但是,这样一来,你的函数
    Public Function BlockSrting(dataString As String) As data1



    end function就不能使用data1返回了,(将data1定义在bas模块中也不可以!)解决办法,
    1,将data1转移出来,独立定义一个类(最简单的处理办法,但不能用于API了)
    2,将你的类,通过添加工程的方式加入,并设置为“公共可创建”
      

  9.   

    你可以建立vb的activeX dll,来引用,不过并不方便,因为将来每台电脑都要注册这个activeX dll才能使用它(好的打包工具可以解决这个问题)。你不如把这把这些常用的类分别建立在多个类模块里并保存为多个.cls文件,在你的新工程里只要添加你的.cls文件,然后就可以调用、调试、编译了。