Estoy intentando llamar una macro escribiendo su nombre en una celda pero no me funciona, mi conocimiento en vb es limitado, asi que si me pueden ayudar se los agradecieria.
Detalle del problema:
Código:
EN LA COLUMNA A ESCRIBO TODAS LAS INSTRUCCIONES QUE REQUIERO (sin = )+-----------+-----------+-----------+-------------------------+ | | A | B | C | +-----------+-----------+-----------+-------------------------+ | 1 |mover(3) | 10 | 25 | +-----------+-----------+-----------+-------------------------+ | 2 |multipli(1)| 2 | | +-----------+-----------+-----------+-------------------------+ | 3 | divide(2) | 5 | | +-----------+-----------+-----------+-------------------------+
LUEGO INGRESO LOS VALORES EN LA COLUMNA B
EN LA COLUMNA C1 DEVUELVO EL RESULTADO DE LAS INSTRUCCIONES.
Pasos logicos:
A1 : mover(3) = mueve el contenido de la columna B3 a la celda C1.
A2 : multipli(1) = multiplica el contenido de C1 por el contenido de B1
A3 : divide(2) = divide el contenido de C1 por el contenido de B2
C1 : CONTIENE EL RESULTADO DE (5*10)/2
Macro Excel:
Sub proceso()
Dim total as Integer
Dim celda As String
Dim resultado As Integer
celda = "B"
resultado = "C1"
Application.Volatile
For i = 1 To 3
Application.Goto Reference:=celda & i
instruccion = ActiveCell.Value
instruccion = LCase(instruccion)
Evaluate (instruccion) '--->generador de problema
Next i
End Sub
Private Function prueba(posicion)
MsgBox posicion
End Function
Private Function mover(posicion)
Application.Goto Reference:=celda & posicion
Selection.Copy
Application.Goto Reference:=resultado
ActiveSheet.Paste
End Function
Private Function multipli(posicion)
Application.Goto Reference:=celda & posicion
total = Selection.value
Application.Goto Reference:=resultado
ActiveCell.FormulaR1C1 = ActiveCell.value * total
End Function
Private Function divide(posicion)
Application.Goto Reference:=celda & posicion
total = Selection.value
Application.Goto Reference:=resultado
ActiveCell.FormulaR1C1 = ActiveCell.value / total
End Function
El problema:
Al ejecutar la función Evaluate(instruccion), va a la función pero no la ejecuta, para verificarlo hay funcion llamada prueba que llama un msgbox y mustra el valor de la posición, pero con el resto de las funciones no las ejecuta.
Agredecere cualquier idea que arregle o modifique el código.
de antemano muchas gracias a todos