ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   evaluation a variable in an expression (https://www.excelbanter.com/excel-programming/363368-evaluation-variable-expression.html)

[email protected]

evaluation a variable in an expression
 
Hi,
Is there any way for me to evaluate a string variable as if it were
code. For example, say I have an input string=".Font.ColorIndex = 4".
Is there anyway for me to get VBA to evaluate the expression:

"Selection" & string

and have it run as if it were the command "Selection.Font.ColorIndex =
4"?

Thanks,
Andrew


Chip Pearson

evaluation a variable in an expression
 
I don't believe there is any way to do this.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com

wrote in message
oups.com...
Hi,
Is there any way for me to evaluate a string variable as if it
were
code. For example, say I have an input
string=".Font.ColorIndex = 4".
Is there anyway for me to get VBA to evaluate the expression:

"Selection" & string

and have it run as if it were the command
"Selection.Font.ColorIndex =
4"?

Thanks,
Andrew




Chip Pearson

evaluation a variable in an expression
 
You can do a few things with CallByName. E.g,.

Debug.Print CallByName(CallByName(Selection, "Font", VbGet),
"ColorIndex", VbGet) = 4

You can nest CallByName's to get the property value you need.

--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com




"Chip Pearson" wrote in message
...
I don't believe there is any way to do this.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com

wrote in message
oups.com...
Hi,
Is there any way for me to evaluate a string variable as if it
were
code. For example, say I have an input
string=".Font.ColorIndex = 4".
Is there anyway for me to get VBA to evaluate the expression:

"Selection" & string

and have it run as if it were the command
"Selection.Font.ColorIndex =
4"?

Thanks,
Andrew






[email protected]

evaluation a variable in an expression
 
Thanks for your response. I don't quite understand it. Could I use it
to change the colorindex to a different value or just to check what the
current color index is?

Thanks,
Andrew

Chip Pearson wrote:
You can do a few things with CallByName. E.g,.

Debug.Print CallByName(CallByName(Selection, "Font", VbGet),
"ColorIndex", VbGet) = 4

You can nest CallByName's to get the property value you need.

--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com




"Chip Pearson" wrote in message
...
I don't believe there is any way to do this.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com

wrote in message
oups.com...
Hi,
Is there any way for me to evaluate a string variable as if it
were
code. For example, say I have an input
string=".Font.ColorIndex = 4".
Is there anyway for me to get VBA to evaluate the expression:

"Selection" & string

and have it run as if it were the command
"Selection.Font.ColorIndex =
4"?

Thanks,
Andrew





Chip Pearson

evaluation a variable in an expression
 
You could use it to change the font colorindex.

CallByName CallByName(Selection, "Font", VbGet), "ColorIndex",
VbLet, 3

This will set the ColorIndex of the Font of the Selection to 3
(red).

The inner CallByName returns (VbGet) the "Font" object property
of Selection object to the outer CallByName, which sets (VbLet)
the "ColorIndex" property to 3 (red).


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com



wrote in message
ups.com...
Thanks for your response. I don't quite understand it. Could
I use it
to change the colorindex to a different value or just to check
what the
current color index is?

Thanks,
Andrew

Chip Pearson wrote:
You can do a few things with CallByName. E.g,.

Debug.Print CallByName(CallByName(Selection, "Font", VbGet),
"ColorIndex", VbGet) = 4

You can nest CallByName's to get the property value you need.

--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com




"Chip Pearson" wrote in message
...
I don't believe there is any way to do this.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com

wrote in message
oups.com...
Hi,
Is there any way for me to evaluate a string variable as if
it
were
code. For example, say I have an input
string=".Font.ColorIndex = 4".
Is there anyway for me to get VBA to evaluate the
expression:

"Selection" & string

and have it run as if it were the command
"Selection.Font.ColorIndex =
4"?

Thanks,
Andrew







[email protected]

evaluation a variable in an expression
 
Thanks so much! Below is a quick function I wrote. It takes as an
input a string with up to one dot that would come after Selection in
VBA code and then performs the action.

Sub testEval()
a = runEvalSelection("Font.ColorIndex=12")
b = runEvalSelection("IndentLevel=1")
End Sub

Function runEvalSelection(strInput)

'This function evaluates a dot delimited string with 2 methods

splitted = Split(strInput, ".")
nmArgs = UBound(splitted) + 1

If nmArgs = 1 Then
secondArg = splitted(0)
whereEqual = InStr(1, secondArg, "=", vbTextCompare)
If whereEqual 0 Then
justMethod = Mid(secondArg, 1, whereEqual - 1)
wantNm = Mid(secondArg, whereEqual + 1, 100)
CallByName Selection, justMethod, VbLet, wantNm
End If
End If


If nmArgs = 2 Then
secondArg = splitted(1)
whereEqual = InStr(1, secondArg, "=", vbTextCompare)
If whereEqual 0 Then
justMethod = Mid(secondArg, 1, whereEqual - 1)
wantNm = Mid(secondArg, whereEqual + 1, 100)
CallByName CallByName(Selection, splitted(0), VbGet),
justMethod, VbLet, wantNm
End If

End If


runEval = True
End Function

Chip Pearson wrote:
You could use it to change the font colorindex.

CallByName CallByName(Selection, "Font", VbGet), "ColorIndex",
VbLet, 3

This will set the ColorIndex of the Font of the Selection to 3
(red).

The inner CallByName returns (VbGet) the "Font" object property
of Selection object to the outer CallByName, which sets (VbLet)
the "ColorIndex" property to 3 (red).


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com



wrote in message
ups.com...
Thanks for your response. I don't quite understand it. Could
I use it
to change the colorindex to a different value or just to check
what the
current color index is?

Thanks,
Andrew

Chip Pearson wrote:
You can do a few things with CallByName. E.g,.

Debug.Print CallByName(CallByName(Selection, "Font", VbGet),
"ColorIndex", VbGet) = 4

You can nest CallByName's to get the property value you need.

--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com




"Chip Pearson" wrote in message
...
I don't believe there is any way to do this.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com

wrote in message
oups.com...
Hi,
Is there any way for me to evaluate a string variable as if
it
were
code. For example, say I have an input
string=".Font.ColorIndex = 4".
Is there anyway for me to get VBA to evaluate the
expression:

"Selection" & string

and have it run as if it were the command
"Selection.Font.ColorIndex =
4"?

Thanks,
Andrew







All times are GMT +1. The time now is 02:41 PM.

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