Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/05/2009, 14:26
Avatar de a n g e l u s
a n g e l u s
 
Fecha de Ingreso: enero-2006
Ubicación: Chile
Mensajes: 237
Antigüedad: 18 años, 10 meses
Puntos: 1
Exclamación llamar macro a través de un texto en una celda

Hola amigos.

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:
+-----------+-----------+-----------+-------------------------+
|           |      A    |       B   |          C              |
+-----------+-----------+-----------+-------------------------+
|      1    |mover(3)   |     10    |           25            |
+-----------+-----------+-----------+-------------------------+
|      2    |multipli(1)|      2    |                         |
+-----------+-----------+-----------+-------------------------+
|      3    | divide(2) |      5    |                         |
+-----------+-----------+-----------+-------------------------+
EN LA COLUMNA A ESCRIBO TODAS LAS INSTRUCCIONES QUE REQUIERO (sin = )
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
__________________
Atte,
A n g e l u s
Concepción - Chile
más vale respuestas bien pensadas, que 7000 post

Última edición por a n g e l u s; 23/05/2009 a las 14:36 Razón: arreglo el codigo