Pintar de color el botón presionado en Excel

Por

Ahora, quisiera compartirles un pequeño truco para pintar el botón presionado.

En ocasiones se crea una especie de menú en  una hoja utilizando botones de autoforma; y cada botón está asociado a una macro.

Para saber cuál botón ha sido presionado, por ejemplo, se puede pintar de color Rojo el botón presionado y los demás botones deberán quedar en un color Azul, como se muestra la imagen.

colorear-boton-presionado-excel-1

Entonces, como ya comentamos, cada botón tiene una macro, lo que debemos agregar a cada macro es la instrucción Application.Caller. Esta instrucción nos devuelve el nombre del botón presionado.

Para conocer el nombre de un objeto, o en este caso un botón de autoforma, simplemente selecciona el botón con el mouse y en el Cuadro de nombres podrás ver el nombre de la autoforma, en este ejemplo, la instrucción Application.Caller nos regresa el nombre “1 Rectángulo redondeado”.

colorear-boton-presionado-excel-2

Utilización de la instrucción Application.Caller

Dentro del código de cada macro y antes de iniciar el código propio de la macro, se debe agregar la instrucción Call Poner_Color(Application.Caller).

Agrega en un módulo el siguiente código:

Sub Poner_Color(autoforma)

ActiveSheet.DrawingObjects.Interior.ColorIndex = 5

ActiveSheet.DrawingObjects(autoforma).Interior.ColorIndex = 3

texto = ActiveSheet.DrawingObjects(autoforma).Text

Range("D5") = texto

DoEvents

End Sub

Sigue el siguiente ejemplo con 3 macros:

Sub macro1()

'Poner color

Call Poner_Color(Application.Caller)

''en esta parte pon el código propio de la macro1

End Sub

'
Sub macro2()

'
'Poner color
Call Poner_Color(Application.Caller)

'

'en esta parte pon el código propio de la macro2

End Sub

'

Sub macro3()

'

'Poner color

Call Poner_Color(Application.Caller)

'

'en esta parte pon el código propio de la macro3

End Sub

'

Sub Poner_Color(autoforma)


ActiveSheet.DrawingObjects.Interior.ColorIndex = 5

ActiveSheet.DrawingObjects(autoforma).Interior.ColorIndex = 3

texto = ActiveSheet.DrawingObjects(autoforma).Text

Range("D5") = texto

DoEvents

End Sub

Listo! Prueba con el archivo anexo de muestra.

Contenido relacionado:
Gerencie.com en su correo.

Suscríbase y nosotros colocaremos en su bandeja de entrada la mejor información que generamos diariamente.


Déjenos su opinión

En Gerencie.com está permitido opinar, criticar, discutir, controvertir, disentir, etc., pero debe hacerlo con respeto, sin insultar y sin ofender a otros.

Información legal aplicable para Colombia.

¿Preocupado por su pensión? Manténgase Informado.