Objects as Properties in VBA - possible?

C

chadwick

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.
 
J

Jonathan West

chadwick said:
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
 
C

chadwick

Yes. The syntax you use is like this

Property Get ReactantCompound(Index As Integer) As ChemicalCompound

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

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top