Sei sulla pagina 1di 8

Centro Industrial de Mantenimiento y Manufactura Sogamoso Boyacá

Ing. Wilson Javier Núñez Vega

COLOR DE RELLENO PROGRAMADO EN VISUAL BASIC

El color de relleno de una celda es ampliamente utilizado por los usuarios de Excel
ya que, al resaltarla con un color diferente, podremos identificarla fácilmente en
pantalla.

En ocasiones el color significará que el dato pertenece a alguna categoría


específica, o tal vez algún estatus o acción que debemos tomar basados en dicho
color. El asunto es que, cuando tenemos varias celdas con un color de relleno, es
casi inevitable que llegue el momento en que necesitemos contarlas por color.

La mayoría de los usuarios buscan de inmediato alguna función de Excel que les
ayude a contar por color, pero pronto se encuentran con que no existe una función
que haga dicha tarea.

Y es que, ninguna de las funciones de Excel puede acceder a la información de


formato de una celda. No existen funciones para saber si la letra es negrita, o para
conocer el tipo de fuente utilizada, así que tampoco existe una función para conocer
el color de la fuente o el color de relleno de una celda.

Cuando me refiero a que no existen funciones de este tipo, me refiero a las


funciones provistas de manera predeterminada por Excel. Sin embargo, es posible
construir nuestra propia función que nos ayude a contar las celdas por color.

Construir una nueva función no es cosa de novatos, pero tampoco es una tarea de
altísima complejidad, así que en esta ocasión te mostraré los pasos necesarios para
que puedas crear esa función que cuente las celdas por color.

Código VBA para contar por color


El código VBA de la función se ha programado con anterioridad y lo encuentras a
continuación, así que solo deberás de insertarlo de la siguiente forma ir a la pestaña
programador si no la tienen hay que verificarla para que aparezca.
Después de copiar el código deberás se debe abrir el editor de visual basic de la
siguiente forma y para eso tienes dos opciones:

• Pulsar el atajo de teclado ALT + F11


• Hacer clic en el botón Visual Basic de la pestaña Programador

Una vez que se abre la ventana del Editor de Visual Basic, deberás hacer clic en en
el menú Insertar > Módulo.

Se insertará un nuevo módulo de código, que llevará un nombre como Módulo1, y


en el panel de la derecha deberás editar el código de la función tal como lo muestra
la siguiente imagen:
Con estos pasos hemos creado y habilitado la nueva función que lleva por nombre
CONTARCOLOR y cuyo uso se expliara a continuación.

Ejemplo para contar celdas por color


La función CONTARCOLOR tiene dos argumentos, el primero de ellos es la
referencia a una celda que tendrá el color de relleno que queremos contar y el
segundo argumento es el rango con las celdas que vamos a evaluar.

La siguiente imagen muestra las celdas del rango A1:A10 con diferentes colores de
relleno y la celda D1 que tiene el color azul el cual nos interesa contar.
Para contar las celdas de color azul en el rango A1:A10, debo utilizar la función
CONTARCOLOR de la siguiente manera:

=CONTARCOLOR(D1, A1:A10)

El primer argumento es la celda que contiene el color que estamos buscando y el


segundo argumento es el rango de celdas. Ingresaré la fórmula anterior en la celda
D2 y al pulsar Entrar obtendremos el siguiente resultado:
No es indispensable tener una celda diferente para especificar el color que
deseamos contar. He utilizado la celda D1 solo para ejemplificar el uso de los dos
argumentos, pero nada impide que utilicemos una celda dentro del rango como el
primer argumento. Considera la siguiente fórmula:

=CONTARCOLOR(A2, A1:A10)

En este caso, la celda A2 tiene el color azul que queremos contar, así que podemos
indicar dicha celda como el primer argumento de la función y el resultado será el
mismo.
El uso de esta función es muy simple y solo deberás asegurarte de indicar en su
primer argumento una celda que tenga el color que te interesa contar. Recuerda
que Excel tiene una gama de millones de colores y por lo tanto debes tener mucho
cuidado ya que podrías ver en pantalla colores muy parecidos cuando en realidad
son distintos.

Consideraciones sobre la nueva función


Para terminar la explicación de esta nueva función quiero mencionar algunas
consideraciones importantes que deberás recordar en todo momento:

• El libro donde se encuentra la nueva función deberá guardarse como un Libro


habilitado para macros o de lo contrario perderás la funcionalidad.
• La función que acabamos de crear solo puede ser utilizada en el libro de
Excel donde has generado el código.
• Esta función solo trabajará adecuadamente en Excel 2007 y versiones
posteriores. Lamentablemente no funcionará en Excel 2003 o versiones
anteriores y la explicación detallada la encontrarás en la última sección de
este artículo.
• El color que estamos evaluando es el color que se aplica a una celda con el
comando Color de relleno y no nos referimos al color de formato condicional
el cual requiere de un código VBA diferente .A continuación, explico el código
de la función para aquellos aprendices que están interesados en el tema de
la programación en Excel.

Explicación del código VBA de la función


He decidido incluir esta sección para aquellos que están un poco más familiarizados
con la programación en Excel y quieren leer una explicación más detallada sobre el
código de la función UDF que acabamos de crear.

En primer lugar, tenemos la declaración de la función la cual acepta dos


argumentos, celdaOrigen y rango.

Function CONTARCOLOR(celdaOrigen As Range, rango As Range)

Ambos argumentos son del tipo Range ya que el primer argumentos tendrá una
referencia a la celda que tiene el color que vamos a contar y el segundo argumento
será la referencia al rango que será evaluado.

La siguiente línea de código es una instrucción que se utiliza para marcar una
función como volátil, lo cual quiere decir que la función será recalculada cada vez
que se efectúa un cálculo en la hoja.

Application.Volatile

Esta instrucción es muy conveniente ya que ocasiona que el resultado de la función


sea actualizado automáticamente al momento de realizar un cambio de color en las
celdas. En la siguiente línea tenemos la declaración de la variable celda que nos
ayudará al momento de recorrer el rango evaluado.

Utilizamos el bucle For Each para recorrer cada una de las celdas del rango y
puedes notar que la instrucción hace referencia a la variable rango que es el
segundo argumento de la función.

For Each celda In rango

Por último, tenemos la instrucción más importante de la función y es la comparación


de los colores. El color de relleno está almacenado en la propiedad Interior.color y
por esa razón se hace la comparación del color de la celda original y el color de la
celda del rango que estamos evaluando.

If celda.Interior.color = celdaOrigen.Interior.color Then

Si los valores de las propiedades son iguales, quiere decir que los colores son
iguales y por lo tanto aumentamos el valor de CONTARCOLOR en uno.
CONTARCOLOR = CONTARCOLOR + 1

De esa manera recorremos todas las celdas del rango y tendremos el resultado final
en CONTARCOLOR cuyo valor es devuelto automáticamente por la función por
tener el mismo nombre.

La propiedad Interior.color
Antes de terminar la explicación del código VBA debo decir que la propiedad
Interior.color está disponible a partir de Excel 2007, así que esta macro no
funcionará para versiones anteriores.

A partir de Excel 2007 tenemos millones de colores disponibles para elegir el color
de relleno de una celda, pero eso no era posible anteriormente. En Excel 2003 y
versiones previas solo era posible elegir entre una paleta de 56 colores y dicho color
era almacenado en la propiedad Interior.ColorIndex.

A partir de Excel 2007 se creó la propiedad Interior.color ya que era imposible


almacenar millones de colores en la propiedad Interior.ColorIndex que se utilizaba
anteriormente. Por esa razón el código de nuestra función no trabajará en Excel
2003 y versiones anteriores a menos que cambies la propiedad utilizada.

Espero que esta función sea de mucha utilidad para esos casos en los que necesites
contar las celdas por color en Excel.

Potrebbero piacerti anche