Macros y los botones de opción

Tengo 5 botones de opción, todos dirigidos a la celda A1 de la hoja de nombre vetas, como puedo hacer para que si selecciona el segundo botón y de hecho en la celda se coloque un dos ejecute automáticamente la macro que corresponda, ¿y qué si selecciona el quito botón realice otra macro?
Por eso he querido hacer una macro que se ejecute cuando se cumpla esa condición. Gracias

1 respuesta

1
Respuesta de
Hola Retana :
La solución la veo agrupando los botones y asignándole al grupo la macro "Botones_comunes", que llama a diferentes macros de acuerdo al valor de la celda a1.
Desde Excel, estando en la hoja "Vetas", presioná ALT+F11, para ir a Visual Basic.
"Insertar/Modulo" y allí volcar el siguiente código:
***************
Sub Botones_Comunes()
Select Case Range("a1").Value
Case 1
macro1
Case 2
macro2
Case 3
macro3
Case 4
macro4
Case 5
macro5
End Select
End Sub
Sub macro1()
MsgBox "Macro1"
End Sub
Sub macro2()
MsgBox "Macro2"
End Sub
Sub macro3()
MsgBox "Macro3"
End Sub
Sub macro4()
MsgBox "Macro4"
End Sub
Sub macro5()
MsgBox "Macro5"
End Sub
******************
Volver a Excel .
En la hoja "Vetas" agrupamos los objetos.
Para agrupar Objetos :
F5 ("edicion/Ir a"), especial..., objetos.
Con el Botón Derecho, "Agrupar".
Y en el "Cuadro de Nombres", cambiar "Grupo xx", por "GrupoBotones".
Asignar macro al grupo, mediante Botón Derecho y opción "Asignar macro ..." (seleccionar "Botones_comunes")
Con esto se termina el tema.
Cada vez que se toma una opción, se ejecuta la macro "Botones_Comunes" que de acuerdo al valor de la celda A1, ejecuta una macro diferente (en este caso las macros muestran un mensaje mediante msgbox).
Espero haber ayudado.
Estoy a tu disposición por cualquier ampliación.
Disculpame si la explicación no es muy clara, pero hoy no estoy inspirado para la redacción.
Suerte.
Gracias por tomarte tu tiempo, pero hago lo que me decís y pero no me hace nada, pregunto con el selec case, como sabe a cual macro debe de ejecutar, ¿es decir si escojo el 2 como sabe que es la macro dos? Y pensaba que eso se hacia mediante etiquetas, ¿si por casualidad hiciste un ejemplo me lo podrías regalar para verlo? Porque no me sale, muchas gracias
Hola Retana :
Tenés razón.
Lo probé y faltaba un paso . Decirle que celda estaba referenciada por los botones de opción.
Eso debía hacerse antes de "agrupar los objetos", mediante botón derecho en un botón cualquiera y tomando la opción "Formato del Control / Vincular con celda" (poner a1).
Si ya tenés los comandos agrupados, tienes que desagruparlos mediante : Botón derecho en el grupo, "Agrupar / Desagrupar"
Marcar una celda cualquiera para cambiar la selección.
Botón derecho en un botón (de opción) cualquiera y tomando la opción "Formato del Control / Vincular con celda" (poner a1).
Volvemos a agrupar (f5 / especiales... / objetos).
Botón derecho en el grupo (cuidado de no perder la selección) "Agrupar / Agrupar".
Botón derecho en el grupo (cuidado de no perder la selección) "Asignar Macro (Botones_comunes)".
Marca cualquier celda para cambiar la selección.
Ahora debería funcionar.
Disculpame, pero como te decía en el Mail anterior, no estaba inspirado en la redacción y me ovidé un "detalle".
Estoy a tu disposición por cualquier aclaración.
Con respecto a tu pregunta "¿como sabe"?:
La sentencia:
Select Case Range("a1").Value
Toma el dato de la celda "a1".
La misma que vinculamos con
De los botones de opción.
Cada botón establece un valor diferente en A1.
Entonces en función a ese valor, ejecutamos una macro diferente :
Por ejemplo si A1=1 , se ejecuta la macro1
Case 1
macro1
Espero haber sido claro.
Suerte.
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Microsoft Excel o hacer tu propia pregunta: