RE:ok, y pa q la funcion la meta el usuario?
Esta solución fue algo muy improvisado pero me funciona, la misma emplea una base de datos para utilizar una instrucción SQL y así obtener el valor deseado algo así:
1.- Crea una base de datos con una sola tabla, con un solo campo (númerico) que tenga un solo registro y que sea de valor igual a 1. La base de datos la llamaré BASE.mdb (suponiendo que sea en acces), la tabla la llamaré TABLA y el campo lo llamaré UNICO.
2.- En una caja texto (podría ser un Text1) tendrás la fórmula declarada, por ejemplo Text1.text=" X + 10 ". y en una variable llamada X (numérica) asignas el valor de prueba por ejemplo X = 7.
3.- Ahora necesitas una variable tipo String la llamaré FORMULA. Luego transformo la expresion de la caja de texto a sus valores numéricos reales, algo así:
For j = 1 To Len(Text1.Text)
if ucase(mid(text1.text , j , 1)) = "X" then 'El ucase es para X minúscula
FORMULA=FORMULA + X
else
FORMULA=FORMULA+mid(text1.text , j , 1)
end if
next j
(es decir FORMULA= " 7 +10 ")
4.- Luego Abres la base de datos (con instrucciones DAO sería: Set DB = OpenDatabase(App.path+"\BASE.mdb").
5.- Para ejecutar tu expresión final sólo debes crear un recordset así: Set rst = db.OpenRecordset("Select " + FORMULA + " * [UNICO] from [TABLA]")
5.- el valor de tu expresion está en:
rst.MoveFirst
MsgBox text1.text + " = " + CStr(rst.Fields(0))
(Esto debería mostrar en una caja de mensajes X + 10 = 17).
Lo bueno de esta rutina es que hasta ahora he co