View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
Ken Dahlberg Ken Dahlberg is offline
external usenet poster
 
Posts: 16
Default Using Property Let with a Type as member of a Class

George,

Thanks for trying, but this isn't it. If I follow your suggestion,
the statement

gp.JParms.Formula = JFormula

still invokes the Property Get method, not the Let. And if I try

gp.JParms = fp

as described below, there is a compilation error on the

Set jprms = RHS

statement: it says "Object Required". So Types are not treated as
objects. If they were, I would need to be using the Property Set
(which also doesn't work) instead of the Let. So apparently there is
no way to set a single element of the type gp.JParms using the
construction

gp.JParms.Formula = JFormula

Oh well - it isn't a major problem.

Ken Dahlberg



"George Nicholson" wrote in message ...
Yes, you are missing something. Are you sitting down?

*Set* jprms = RHS

User-defined types (and classes) need to be treated as objects & require the
use of Set.

:-) Happens to all of us.

Hope this helps,
--
George Nicholson

Remove 'Junk' from return address.


"Ken Dahlberg" wrote in message
om...
I've encountered a need to build a Class module that has a couple of
Types as members. So first the Type is defined in a standard module,
thus:

Public Type FitParms
XVar as String
YVar as String
Formula as String
Par(6) as Double
End Type

Then, in a Class module called PcGroup there are these statements:

Private jprms as FitParms
Public Property Get JParms() As FitParms
JParms = jprms
End Property
Public Property Let JParms(RHS As FitParms)
jprms = RHS
End Property

Now here's the "problem": the Let doesn't work the way I would like it
to. If gp is an instance of the PcGroup class, the Get works just as
expected: the statement

Private JFormula as String
JFormula = gp.JParms.Formula

assigns the appropriate value from the jprms Type to the local
variable JFormula. But if I try to do it the other way:

gp.JParms.Formula = JFormula

this again invokes the Property Get module, not the Let, and nothing
is assigned to the Formula field in jprms. The only way I can use the
Let is by defining a local FitParm variable and then assigning the
whole thing, like this:

Private fp as FitParm
fp = gp.JParms
fp.Formula = JFormula
gp.JParms = fp

Then the Let module is invoked and the assignment is made.

Am I missing something here? Is this really the way this works, or is
there some way make the Let to work the way I want it to? VBA doesn't
allow me to declare the Type as a Public member of the Class, so I
can't bypass the Get/Let construction.

Thanks,
Ken Dahlberg