Hello all,
Is it possible for a property of an object in VBA to itself be an
object? I'm working on a program that involves chemical equations,
and consequently I have defined a couple of useful classes:
"ChemicalCompound," and "ChemicalEquation." The ChemicalEquation
class has as one of its members an array of ChemicalCompound objects,
which represent the reactant compounds in the equation. I would like
to keep the actual array private (i.e. access restricted to the class)
and use a Property Get to access the ChemicalCompound objects in the
array. Is possible for the return value of a Property Get to be an
object of a user-defined class?

Here's some rough code that might give you a sense of what I'm trying
to do:

In Class Module ChemicalEquation:

Private Type ChemicalCompoundsList
'Note that the nth coefficient goes with the nth compound
Compounds() As ChemicalCompound
Coefficients() As Integer
End Type

Private pReactants As ChemicalCompoundsList
Private pProducts As ChemicalCompoundsList

'Can I do this?:
Property Get ReactantCompound(Index As Integer)
ReactantCompound = pReactants.Compounds(Index - 1)
End Property


In a Standard Module:
Sub TestChemicalEquationClass()
'Create a ChemicalEquation Object
Dim MyEquation As ChemicalEquation
Set MyEquation = New ChemicalEquation

'Retrieve the 1st ChemicalCompound object in the pReactants array,
'via Property Get ReactantCompound
Dim MyCompound As ChemicalCompound
MyCompound = MyEquation.ReactantCompound(1)
End Sub

Any takers? Help is always greatly appreciated.

Re: Objects as Properties in VBA - possible? by Jonathan

Jonathan
Fri Feb 29 13:41:28 PST 2008


"chadwick" <chad.mills@gmail.com> wrote in message
news:9b2c8324-f85c-45de-8e15-f83f14638439@d4g2000prg.googlegroups.com...
> Hello all,
> Is it possible for a property of an object in VBA to itself be an
> object? I'm working on a program that involves chemical equations,
> and consequently I have defined a couple of useful classes:
> "ChemicalCompound," and "ChemicalEquation." The ChemicalEquation
> class has as one of its members an array of ChemicalCompound objects,
> which represent the reactant compounds in the equation. I would like
> to keep the actual array private (i.e. access restricted to the class)
> and use a Property Get to access the ChemicalCompound objects in the
> array. Is possible for the return value of a Property Get to be an
> object of a user-defined class?

Yes. The syntax you use is like this

Property Get ReactantCompound(Index As Integer) As ChemicalCompound


--
Regards
Jonathan West - Word MVP
www.intelligentdocuments.co.uk
Please reply to the newsgroup



Re: Objects as Properties in VBA - possible? by chadwick

chadwick
Fri Feb 29 23:17:09 PST 2008

On Feb 29, 4:41 pm, "Jonathan West" <jw...@mvps.org> wrote:
> "chadwick" <chad.mi...@gmail.com> wrote in message
>
> news:9b2c8324-f85c-45de-8e15-f83f14638439@d4g2000prg.googlegroups.com...
>
> > Hello all,
> > Is it possible for a property of an object in VBA to itself be an
> > object? I'm working on a program that involves chemical equations,
> > and consequently I have defined a couple of useful classes:
> > "ChemicalCompound," and "ChemicalEquation." The ChemicalEquation
> > class has as one of its members an array of ChemicalCompound objects,
> > which represent the reactant compounds in the equation. I would like
> > to keep the actual array private (i.e. access restricted to the class)
> > and use a Property Get to access the ChemicalCompound objects in the
> > array. Is possible for the return value of a Property Get to be an
> > object of a user-defined class?
>
> Yes. The syntax you use is like this
>
> Property Get ReactantCompound(Index As Integer) As ChemicalCompound
>
> --
> Regards
> Jonathan West - Word MVPwww.intelligentdocuments.co.uk
> Please reply to the newsgroup

Thanks so much for the help! Sometimes it's the simplest things...