¿Cómo ejecutar una macro desde una celda?

Me gustaría ver si me podéis resolver esta duda. ¿Cómo puedo hacer para ejecutar una macro, desde una celda?. Es decir, que cuando una celda tenga un valor determinado, por ejemplo "1", se active una sencilla macro (colorear una celda).
Seria algo así: celda A2 ? =SI(A1=""; ejecutar macro "Colorear_celda_A1"; "")
Lo más aproximado que he conseguido, ha sido usando una casilla de verificación. Creo la casilla, en formularios, y le asigno la macro "Colorear_celda_A1" y también la vinculo con la celda B2. De esta manera, cuando válido la casilla con el ratón, la macro funciona. La otra consecuencia de haber validado la casilla es que, el valor de la celda B2 es: "VERDADERO".
Esta celda cambia de valor (V o Falso), según la casilla esta marcada o desmarcada.
Si yo hago la operación contraria y en lugar de actuar sobre la casilla de verificación, lo haga sobre la celda B2 y pongo un "0" o "Falso" la casilla se desmarca. Si pongo un "1" o "Verdadero", la casilla se marca. El problema es que, al poner el "1" en B2 y marcarse la casilla, la macro no se pone en marcha. Y eso es precisamente lo que yo quisiera conseguir.
Esto ha sido solo un ejemplo para intentar explicarme, en la solución no tiene porque estar incluida una casilla de verificación.
Pero si me gustaría, si es posible, que esto se pudiese hacer con alguna función de Excel, que no sean macros, ya que me gustaría poderlas limitar al máximo, por el tema de los bichos. Pero ... Si no es posible ...
Si no hay nadie que sepa la solución, quizá es que. Simplemente no se puede hacer. En ese caso también agradecería que me lo contaseis.
Disculpas por la extensión del asunto y gracias anticipadas a todos los que podáis ayudarme.
1

1 Respuesta

2.206.790 pts. En mi sitio encontraran material de ayuda, ejemplos...
Mencionas que te gustaría una solución sin macros, pero si estás asignando ya una macro para colorear no te molestará tener un par de instrucciones más para completar la tarea.
Lo más sencillo es colocar una instrucción que te controle lo que ingresas en A1. La siguiente rutina se coloca en el objeto HOJA donde actuará:
Private Sub Worksheet_Change(ByVal Target As Range)
'controla si se ingresó un dato en A1
If Target.Address(False, False) = "A1" Then
'controla si el valor en A1 = 1
If Target.Value = 1 Then Call Colorear_celda_A1
End If
End Sub
En un módulo ya tendrás la rutina Colorear_celda_A1
Si necesitas agregar algo más por si el valor es <> 1 podemos seguir el tema.
Saludos
Elsa
** En el siguiente sitio encontrarás instrucciones, ejemplos y descargas gratuitas:
También en la demo del manual 400Macros encontrarás 1 tema desarrollado en cada capítulo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas