Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations cowski on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

How do you pass the name of a type member to a function?

Status
Not open for further replies.

Nojj

Computer
Apr 8, 2003
10
I suspect this is a real tough one - it's driving me mad. I'm trying to write a function which receives a user-defined type member name (not its value). How do you pass the name of a type member to a function? Obviously you can pass it as a string but then how do you use it?

This should make things clear:

Private Type MyType
x1 as integer
x2 as single
End type

Dim MyData as MyType
.
.

MyFunction(MyData.x2) ' this passes the value (which is not what I want)

'MyFunction must be able accept the name of the type member:

MyFunction(whatever) ' pass the name, ie x2 or x1

Public Function MyFunction(whatever)
Dim YourData(10) as MyType

' Of course the next line doesn't work
' I want to set the value of YourData(5).x2 = 1.23
YourData(5).whatever = 1.23
.
.
End Function

 
Replies continue below

Recommended for you

You can not use a text string as part of a variable like you want. I am not really sure what you are after, but you can use the ByRef designation when passing the value to the function. This will allow you to update the variable being sent. Search for "ByRef" in the help for a better explanation.

DimensionalSolutions@Core.com
While I welcome e-mail messages, please post all thread activity in these forums for the benefit of all members.
 
Choice of ByRef or ByVal won't help here.
I want the item to the right of the dot, which I have called "whatever" to be determined by a variable that is passed to the function. I don't want to change the value of the user-defined type that called the function.

YourData(5).whatever = 1.23

The above is of course not possible. I'm just trying to show what I need to achieve.

The function should actually do this :
YourData(5).x1 = 1.23
or
YourData(5).x2 = 1.23
etc, whatever is passed!

I thought this would be a tricky one to explain.

 
Status
Not open for further replies.

Part and Inventory Search

Sponsor