Cambiar colores de fondo con VBA

Qué tal mi querida comunidad! Hoy veremos cómo cambiar colores de fondo con VBA

Colores botón excel VBA

Los colores por defecto que nos ofrece Excel en la sección de VBA son poco atractivos y muy básicos

En este post aprenderemos a generar un listado de diferentes colores que podemos utilizar tanto para controles VBA como para celdas en el aplicativo

El código es bastante sencillo, sólo es cuestión de entender algunos conceptos, los cuales explicaré a continuación

BackColor .- Lo definimos como la propiedad de un objeto que nos permite establecer el color de fondo del mismo

Interior.Color .- También nos permite establecer el color del fondo, pero a diferencia del anterior, lo utilizaremos sólo con celdas

RGB .- Es una función de VBA, a la cual se le envían tres variables y ésta devuelve un número sin decimales, del tipo Long, que equivale a un color

Valor Hexadecimal .- Es un valor generado de la forma #DC9898, equivale al un color seleccionado

No quiero complicarte la definición con mucho tecnicismo, por lo que empezaremos con los pequeños desarrollos para entender mejor

Cambiar el color de fondo de una celda

Todo lo haremos con VBA, primero seleccionaremos una celda objetivo en una hoja objetivo, en este caso será la D12 en la Hoja 1

Cambiar el color de una celda desde VBA

Ahora haremos un pequeño desarrollo para lograr el objetivo

Cambiar el color de fondo de una celda con RGB

Y para limpiar el color, usaremos a Clear, quedando nuestro código de la siguiente forma:

Sub CambiarColor()
    Hoja1.Range("D12").Interior.Color = RGB(20, 160, 27)
End Sub

Sub Limpiar()
    Hoja1.Range("D12").ClearFormats
End Sub

Cambiar el color de fondo de un control Activex

Vale, hemos visto que cambiar el color de fondo de un celda no es la gran complejidad, de manera muy similar trabajaremos con la misma lógica con los controles ActiveX

Los controles ActiveX y los controles de la caja de herramientas desde la interfaz del editor del aplicativo Excel tienen propiedades muy similares pero no son las mismas

Ing. Luis Rojas

Vale, pero no nos llenemos de palabras nuevamente y vamos al código, para este caso usaremos un control ActiveX en la hoja de nombre por defecto Hoja1

Cambiar colores de fondo con VBA

Dejaré el nombre por defecto CommandButton1, debido a que este post no tiene la finalidad de modificar la lógica de programación que tiene cada uno

El código que emplearemos será el siguiente

Como mencioné líneas arriba, el BackColor de manera similar al Interior.Color nos permite trabajar con un valor que equivale al color que necesitamos, pero a diferencia del segundo, trabajamos con controles ActiveX y no con celdas

A diferencia de una celda, no podemos igualar el BackColor a Empty, ya que si lo hacemos nos devolverá un color negro

Para volver a asignar el color plomo por defecto a un control ActiveX, debemos igualar el BackColor a -2147483633

Añado que estéticamente se ve mejor un control ActiveX no sólo con el color de fondo cambiado, sino también el color de fuente

Por lo que podríamos usar este código

Sub CambiarColorA()
    Hoja1.CommandButton1.BackColor = RGB(224, 238, 238)
    Hoja1.CommandButton1.ForeColor = RGB(0, 0, 139)
End Sub

Sub LimpiarA()
    Hoja1.CommandButton1.BackColor = -2147483633
    Hoja1.CommandButton1.ForeColor = Empty
End Sub

Y dejaremos ésta publicación hasta este punto, posteriormente estaré comentando más sobre este tema

Descargar Cambiar colores de fondo con VBA.xlsm

Te invito a que me agregues en LinkedIn, cualquier duda o consulta me puedes escribir a luisrojas@tutorialesexcel.com

Deja una respuesta