+ Reply to Thread
Results 1 to 3 of 3

User-defined type collection in class module

  1. #1
    Rob
    Guest

    User-defined type collection in class module

    I am trying to build a class module that has, among other things, a
    collection consisting of items of a user-defined type. VBA is not
    cooperating. Let say the type declaration is:

    [Private?] Type ItemData
    name as String
    data1 as double
    data2 as double
    End Type

    In the class module, I set up a collection:

    Dim myCollection as New Collection

    I want a method to add to the collection, so in the class module:

    Sub addItem(nm as String, d1 as Double, d2 as Double)
    dim item as ItemData

    item.name = nm
    item.data1 = d1
    item.data2 = d2

    myCollection.Add (item)
    End Sub

    If I put the type declaration in the class module w/o the "Private", an
    error says I cannot define a Public user-defined type in an object
    module.
    If I do use "Private", or if I put the type declaration into a standard
    module, it then says that only user-defined type defined in public
    object modules can be passed to late-bound functions (is this what is
    happening, since I'm using a Collection?)

    Can this be done? If so, what's the trick? Any help is appreciated!


  2. #2
    witek
    Guest

    Re: User-defined type collection in class module

    Rob wrote:
    > I am trying to build a class module that has, among other things, a
    > collection consisting of items of a user-defined type. VBA is not
    > cooperating. Let say the type declaration is:
    >
    > [Private?] Type ItemData
    > name as String
    > data1 as double
    > data2 as double
    > End Type
    >
    > In the class module, I set up a collection:
    >
    > Dim myCollection as New Collection
    >
    > I want a method to add to the collection, so in the class module:
    >
    > Sub addItem(nm as String, d1 as Double, d2 as Double)
    > dim item as ItemData
    >
    > item.name = nm
    > item.data1 = d1
    > item.data2 = d2
    >
    > myCollection.Add (item)
    > End Sub
    >
    > If I put the type declaration in the class module w/o the "Private", an
    > error says I cannot define a Public user-defined type in an object
    > module.
    > If I do use "Private", or if I put the type declaration into a standard
    > module, it then says that only user-defined type defined in public
    > object modules can be passed to late-bound functions (is this what is
    > happening, since I'm using a Collection?)
    >
    > Can this be done? If so, what's the trick? Any help is appreciated!
    >


    define ItemData as public in standard module.



  3. #3
    Rob
    Guest

    Re: User-defined type collection in class module

    witek wrote:
    > Rob wrote:
    > > I am trying to build a class module that has, among other things, a
    > > collection consisting of items of a user-defined type. VBA is not
    > > cooperating. Let say the type declaration is:
    > >
    > > [Private?] Type ItemData
    > > name as String
    > > data1 as double
    > > data2 as double
    > > End Type
    > >
    > > In the class module, I set up a collection:
    > >
    > > Dim myCollection as New Collection
    > >
    > > I want a method to add to the collection, so in the class module:
    > >
    > > Sub addItem(nm as String, d1 as Double, d2 as Double)
    > > dim item as ItemData
    > >
    > > item.name = nm
    > > item.data1 = d1
    > > item.data2 = d2
    > >
    > > myCollection.Add (item)
    > > End Sub
    > >
    > > If I put the type declaration in the class module w/o the "Private", an
    > > error says I cannot define a Public user-defined type in an object
    > > module.
    > > If I do use "Private", or if I put the type declaration into a standard
    > > module, it then says that only user-defined type defined in public
    > > object modules can be passed to late-bound functions (is this what is
    > > happening, since I'm using a Collection?)
    > >
    > > Can this be done? If so, what's the trick? Any help is appreciated!
    > >

    >
    > define ItemData as public in standard module.


    Hmm. I've tried that, and it returns the same error:

    "Only user-defined types defined in public object models can be coerced
    to or from a variant or passed to late-bound functions"

    I'm actually not sure what this error is saying. I suspect it's
    because I'm using a collection, but I can't say for sure.


+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1