Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Performance Evaluation | Excel Discussion (Misc queries) | |||
Formula evaluation | New Users to Excel | |||
Options Evaluation | Excel Worksheet Functions | |||
variable not equal to expression | Excel Programming |