Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 18
Default 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

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,939
Default 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

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,420
Default 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



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default 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



  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,939
Default 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






  #6   Report Post  
Posted to microsoft.public.excel.programming
JMB JMB is offline
external usenet poster
 
Posts: 2,062
Default 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




  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,420
Default 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






  #8   Report Post  
Posted to microsoft.public.excel.programming
JMB JMB is offline
external usenet poster
 
Posts: 2,062
Default 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







Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Get Property value of class instance by passing string property name [email protected] Excel Programming 2 October 19th 07 05:47 PM
Error: Cannot Set Range Class Property 2hOt Excel Programming 2 August 1st 06 12:52 PM
How to cycle through each of property and its value of Class? Tetsuya Oguma Excel Worksheet Functions 1 March 3rd 06 10:36 AM
Cannot set HorizontalAlignment Property of the Range Class Alan Excel Programming 10 December 10th 04 12:57 AM
Access to class property in other workbook BenD[_2_] Excel Programming 2 March 3rd 04 09:11 AM


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

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"