Evaluate text strings as a formula

G

Guest

Hi All

I am delving into VB and getting somewhat lost. I have a spread sheet
designed so a end user only needs to enter columns of data and a few
parameters. However, the way it falls together is that I need to concatenate
text and evaluate the string as a formula. In a previous posting I found this
suggestion...

Sub ConvertToFormula()
ActiveCell.Formula = ActiveCell.Value
End Sub

I entered it into the VBA editor (as a UDF), and it appears in the user
defined function list. However it returns the #VALUE! error. I am more
familar with matlab and the comparative function in that environment would
be...

x = eval(concatenate('formula', 'as text'))

Thanks in advance
Nick Flyger
 
B

Bob Phillips

Try this

Function eval(pFormula, pText)
Application.Volatile
eval = Application.Caller.Parent.Evaluate(pFormula & pText)
End Function


--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)
 
G

Guest

Tried it but it isn't quite what I am after. I only have one input argument
which is a concatenated string that I want to evaluate. Can you clarify how I
might use your eval formula?

I have only started on VB this week so it is fair to say I am pretty
illiterate in it's programming.

Cheers
Nick
 
B

Bob Phillips

In that case just reduce it to one argument, and strip the internal
concatenation

Function eval(pFormula)
Application.Volatile
eval = Application.Caller.Parent.Evaluate(pFormula)
End Function

and as an example of usage

=eval("B4*"&10)

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)
 
G

Guest

yip now I see, it doesn't seem to work when you point to a cell with the text
but will evaluate when you concatenate directly into the eval formula.

Thanks for your time
nick
 
B

Bob Phillips

Nick,

This version should get over that

Function eval(pFormula)
Application.Volatile
eval = Application.Caller.Parent.Evaluate(CStr(pFormula))
End Function



--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top