Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
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
Posted to microsoft.public.excel.programming
|
|||
|
|||
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
Posted to microsoft.public.excel.programming
|
|||
|
|||
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
Posted to microsoft.public.excel.programming
|
|||
|
|||
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
Posted to microsoft.public.excel.programming
|
|||
|
|||
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
Posted to microsoft.public.excel.programming
|
|||
|
|||
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
Posted to microsoft.public.excel.programming
|
|||
|
|||
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
Posted to microsoft.public.excel.programming
|
|||
|
|||
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 |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Get Property value of class instance by passing string property name | Excel Programming | |||
Error: Cannot Set Range Class Property | Excel Programming | |||
How to cycle through each of property and its value of Class? | Excel Worksheet Functions | |||
Cannot set HorizontalAlignment Property of the Range Class | Excel Programming | |||
Access to class property in other workbook | Excel Programming |