Group: microsoft.public.word.vba.general
From: chadwick
Date: Friday, February 29, 2008 3:05 PM
Subject: Objects as Properties in VBA - possible?

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.