Macros y los botones de opción

Respuesta de
a
Usuario
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
Experto
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.
Usuario
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
Experto
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.



Usuario
Excelente, y muchísimas Gracias por esa frase "Estoy a tu disposición por cualquier ampliación", te lo agradezco