ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Call the property of a class using a variable (https://www.excelbanter.com/excel-programming/415495-call-property-class-using-variable.html)

Rob Wills

Call the property of a class using a variable
 
I'm sure this is possible.

I have written a class module which contains a number of properties.

I wish to change the value of one of the properties, however I want to
dynamically identify the property that I'm changing

For example: if my class has integer properties of X and Y I wish to be able
to do somthing similar to below

========================================
Function Change_Value(strProperty as String, iValue as Integer)
Dim objClass As myClass

Set objClass = New myClass

objclass(strproperty) = iValue

End Function
=========================================

Thanks in Advance
Rob


Jim Thomlinson

Call the property of a class using a variable
 
You can do it but it is a bit of a brute force attack... Define our get and
let to take a string argument and then you can use a select case to evaluate
the string input to determine the appropriate property...

Function Change_Value(strProperty as String, iValue as Integer)
Dim objClass As myClass

Set objClass = New myClass

objclass.LetVariableProperty(strproperty) = iValue

End Function

--
HTH...

Jim Thomlinson


"Rob Wills" wrote:

I'm sure this is possible.

I have written a class module which contains a number of properties.

I wish to change the value of one of the properties, however I want to
dynamically identify the property that I'm changing

For example: if my class has integer properties of X and Y I wish to be able
to do somthing similar to below

========================================
Function Change_Value(strProperty as String, iValue as Integer)
Dim objClass As myClass

Set objClass = New myClass

objclass(strproperty) = iValue

End Function
=========================================

Thanks in Advance
Rob


Bob Phillips[_3_]

Call the property of a class using a variable
 
Function Change_Value(strProperty As String, iValue As Integer)
Dim objClass As MyClass

Set objClass = New MyClass

CallByName objClass, strProperty, VbLet, iValue

End Function


--
__________________________________
HTH

Bob

"Rob Wills" wrote in message
...
I'm sure this is possible.

I have written a class module which contains a number of properties.

I wish to change the value of one of the properties, however I want to
dynamically identify the property that I'm changing

For example: if my class has integer properties of X and Y I wish to be
able
to do somthing similar to below

========================================
Function Change_Value(strProperty as String, iValue as Integer)
Dim objClass As myClass

Set objClass = New myClass

objclass(strproperty) = iValue

End Function
=========================================

Thanks in Advance
Rob




Peter T

Call the property of a class using a variable
 
I can't imagine ever doing this (other ways) but as you ask

' code in normal module

Dim c As Class1

Function foo(sProp As String, LetGet As VbCallType, arg) As Long

If c Is Nothing Then Set c = New Class1

If LetGet = VbLet Then
CallByName c, sProp, LetGet, CLng(arg)
ElseIf LetGet = VbGet Then
foo = CallByName(c, sProp, LetGet)
End If

End Function

Sub test()
arrProps = Array("PropA", "PropB")
arrvals = Array(100&, 200&)

For i = 0 To 1
foo CStr(arrProps(i)), VbLet, arrvals(i)
Next

For i = 0 To 1
Debug.Print foo(CStr(arrProps(i)), VbGet, a)
Next

Set c = Nothing
End Sub
''''''' end normal module

''''' code in Class1

Dim x As Long
Dim y As Long

Public Property Let propA(n As Long)
x = n
End Property
Public Property Get propA() As Long
propA = x
End Property

Public Property Let propB(n As Long)
y = n
End Property
Public Property Get propB() As Long
propB = y
End Property

''''' end Class1

Regards,
Peter T

"Rob Wills" wrote in message
...
I'm sure this is possible.

I have written a class module which contains a number of properties.

I wish to change the value of one of the properties, however I want to
dynamically identify the property that I'm changing

For example: if my class has integer properties of X and Y I wish to be
able
to do somthing similar to below

========================================
Function Change_Value(strProperty as String, iValue as Integer)
Dim objClass As myClass

Set objClass = New myClass

objclass(strproperty) = iValue

End Function
=========================================

Thanks in Advance
Rob




Jim Thomlinson

Call the property of a class using a variable
 
Well that's a new one for me to look into... I don't do classes that often,
but that could be handy. General interest question. Do you actually know
everything or does it just appear that way to the rest of us... ;-)

To the OP... here is a resource on CallByName
http://msdn.microsoft.com/en-us/libr...x6(VS.80).aspx
--
HTH...

Jim Thomlinson


"Bob Phillips" wrote:

Function Change_Value(strProperty As String, iValue As Integer)
Dim objClass As MyClass

Set objClass = New MyClass

CallByName objClass, strProperty, VbLet, iValue

End Function


--
__________________________________
HTH

Bob

"Rob Wills" wrote in message
...
I'm sure this is possible.

I have written a class module which contains a number of properties.

I wish to change the value of one of the properties, however I want to
dynamically identify the property that I'm changing

For example: if my class has integer properties of X and Y I wish to be
able
to do somthing similar to below

========================================
Function Change_Value(strProperty as String, iValue as Integer)
Dim objClass As myClass

Set objClass = New myClass

objclass(strproperty) = iValue

End Function
=========================================

Thanks in Advance
Rob





JMB

Call the property of a class using a variable
 
At one time, he was working on a paper regarding the use of class modules. I
think he got sidetracked or was just teasing me <g

"Jim Thomlinson" wrote:

Well that's a new one for me to look into... I don't do classes that often,
but that could be handy. General interest question. Do you actually know
everything or does it just appear that way to the rest of us... ;-)

To the OP... here is a resource on CallByName
http://msdn.microsoft.com/en-us/libr...x6(VS.80).aspx
--
HTH...

Jim Thomlinson


"Bob Phillips" wrote:

Function Change_Value(strProperty As String, iValue As Integer)
Dim objClass As MyClass

Set objClass = New MyClass

CallByName objClass, strProperty, VbLet, iValue

End Function


--
__________________________________
HTH

Bob

"Rob Wills" wrote in message
...
I'm sure this is possible.

I have written a class module which contains a number of properties.

I wish to change the value of one of the properties, however I want to
dynamically identify the property that I'm changing

For example: if my class has integer properties of X and Y I wish to be
able
to do somthing similar to below

========================================
Function Change_Value(strProperty as String, iValue as Integer)
Dim objClass As myClass

Set objClass = New myClass

objclass(strproperty) = iValue

End Function
=========================================

Thanks in Advance
Rob





Bob Phillips[_3_]

Call the property of a class using a variable
 
You are absolutely right, on both counts. I was/am working on it, and I got
sidetracked. The hardest part is getting a meaningful case to build a class
upon. Although I use them extensively, I need to find a custom object that
will ring a bell with the target audience. Most people use the ubiquitous
person class, which I think falls far short of the mark.

But I must admit that I had not intended to introduce CallByName within that
paper, I never use it, and I don't see much use for it personally.

--
__________________________________
HTH

Bob

"JMB" wrote in message
...
At one time, he was working on a paper regarding the use of class modules.
I
think he got sidetracked or was just teasing me <g

"Jim Thomlinson" wrote:

Well that's a new one for me to look into... I don't do classes that
often,
but that could be handy. General interest question. Do you actually know
everything or does it just appear that way to the rest of us... ;-)

To the OP... here is a resource on CallByName
http://msdn.microsoft.com/en-us/libr...x6(VS.80).aspx
--
HTH...

Jim Thomlinson


"Bob Phillips" wrote:

Function Change_Value(strProperty As String, iValue As Integer)
Dim objClass As MyClass

Set objClass = New MyClass

CallByName objClass, strProperty, VbLet, iValue

End Function


--
__________________________________
HTH

Bob

"Rob Wills" wrote in message
...
I'm sure this is possible.

I have written a class module which contains a number of properties.

I wish to change the value of one of the properties, however I want
to
dynamically identify the property that I'm changing

For example: if my class has integer properties of X and Y I wish to
be
able
to do somthing similar to below

========================================
Function Change_Value(strProperty as String, iValue as Integer)
Dim objClass As myClass

Set objClass = New myClass

objclass(strproperty) = iValue

End Function
=========================================

Thanks in Advance
Rob







JMB

Call the property of a class using a variable
 
When I began learning about classes, I attempted a sudoku puzzle. I figured
it offered opportunities to learn custom classes, events, and parent child
relationships. But I got sidetracked and never finished it <g. I've never
really found a lot of practical uses for custom classes in my work (or I'm
not using enough imagination), so my interest is mostly academic at this
point.

"Bob Phillips" wrote:

You are absolutely right, on both counts. I was/am working on it, and I got
sidetracked. The hardest part is getting a meaningful case to build a class
upon. Although I use them extensively, I need to find a custom object that
will ring a bell with the target audience. Most people use the ubiquitous
person class, which I think falls far short of the mark.

But I must admit that I had not intended to introduce CallByName within that
paper, I never use it, and I don't see much use for it personally.

--
__________________________________
HTH

Bob

"JMB" wrote in message
...
At one time, he was working on a paper regarding the use of class modules.
I
think he got sidetracked or was just teasing me <g

"Jim Thomlinson" wrote:

Well that's a new one for me to look into... I don't do classes that
often,
but that could be handy. General interest question. Do you actually know
everything or does it just appear that way to the rest of us... ;-)

To the OP... here is a resource on CallByName
http://msdn.microsoft.com/en-us/libr...x6(VS.80).aspx
--
HTH...

Jim Thomlinson


"Bob Phillips" wrote:

Function Change_Value(strProperty As String, iValue As Integer)
Dim objClass As MyClass

Set objClass = New MyClass

CallByName objClass, strProperty, VbLet, iValue

End Function


--
__________________________________
HTH

Bob

"Rob Wills" wrote in message
...
I'm sure this is possible.

I have written a class module which contains a number of properties.

I wish to change the value of one of the properties, however I want
to
dynamically identify the property that I'm changing

For example: if my class has integer properties of X and Y I wish to
be
able
to do somthing similar to below

========================================
Function Change_Value(strProperty as String, iValue as Integer)
Dim objClass As myClass

Set objClass = New myClass

objclass(strproperty) = iValue

End Function
=========================================

Thanks in Advance
Rob









All times are GMT +1. The time now is 05:11 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com