Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como Dar FORMATO DOS COLORES a FUENTE en MISMA CELDA con Excel VBA #607

Macro da formato 2 colores a fuentes de una misma celda

MACRO de EXCEL PARA DAR FORMATO DE DOS COLORES A FUENTE EN UNA MISMA CELDA DEPENDIENDO DE VALOR DE OTRA CELDA

En este post se muestra una macro que permite dar formato a una fuente de Excel pero con dos colores en una misma celda, a veces es necesario dar color a las fuentes con distintos colores, pero en una misma celda, esta macro hace exactamente eso toma una celda y a la mitad de la cadena de caracteres contenida en la celda la pinta con un color y a la otra mitad le da otro color, el color que utilizará en cada fuente dependerá del valor de otra celda.

Maneja Excel como los mejores deberías hacer click acá, si quieres aprender sobre Excel en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los ❤️MEJORES CURSOS de EXCEL ON LINE❤️ que he visto en internet, te lo recomiendo no te arrepentirás.

  
 
 
Puedes ver la macro en acción y una explicación más detallada de su codificación y funcionamiento, descarga el archivo y mira el video para una más fácil comprensión de la macro; suscribe a nuestro canal de You Tube, mira los playlist con  Vídeos de Macros de Excel con Ejemplos Gratis para Descargar donde podrás ver la macros relacionadas en acción con una explicación en forma visual que ayudará a entender el ejemplo en forma más fácil. Te pido que apoyes al canal;  suscribe y comenta en DTube y Odysee para poder seguir publicado macros gratis.
 
 
 

 

MACRO PARA DAR FORMATO A FUENTE COLORENDO LA FUEN CON DOS COLOLES DISTINTOS EN UNA MISMA CELDA

En el ejemplo se da formato con una macro a la fuente de una celda con dos colores distintos y dependiendo del valor de otra celda, podría decirse que es un formato condicional.

Dependiendo del valor de la celda H, establecerá el color de la fuente de la celda K, es decir que si el porcentaje de ganancia es positivo coloreara la palabra «UP» con color verde, si el valor de la celda K es negativo coloreara la palabra «LOW» con color rojo, si el valor de la celda K es cero no pondrá color a la fuente; pero fíjense que en la celda H se encuentra la cadena de caracteres «UP – LOW», la macro deberá determinar donde se encuentra la cadena de caracteres UP y LOW para que luego dependiendo del valor de la celda H coloree con verde UP y LOW con rojo según corresponda.

El código se puede agregar en cualquier evento, como por ejemplo que se ejecute cuando se modifique una celda, en este caso el código se ejecuta en el evento click del fotón que dice formato y que ese encuentra en la celda K1.

La macro primero determina cual es la última fila con datos para que generar un bucle entre la fila 3 que es donde comienzan los datos y la última fila con datos, se usa el siguiente código:

ufa = a.Range(«A» & Rows.Count).End(xlUp).Row

Luego crea un bucle usando for… next que va desde 3 hasta la última fila con datos, determinando en cada celda de la columna K donde está el guión ( – ) que separa la palabra UP de LOW, ello es para establecer que cadena de caracteres pintara de color rojo o verde, se usan los siguientes códigos:

cad = Cells(x, «K»)
guion = InStr(cad, «-«)
lar = Len(cad)
lar1 = Left(cad, guion – 2)
lar1 = Len(lar1)

Se establece luego si el valor de la celda H es mayor a cero en ese caso pinta de color verde la palabra «UP» que sería la primer parte de la cadena («UP – LOW») y la segunda parte de la cadena, ósea la palabra «LOW», la deja en color negro o automático se usan los siguientes códigos

If a.Cells(x, «H») > 0 Then

Para poner la palabra en color negro se usa el siguiente código, nótese que empieza en el carácter donde encontró el guion (con este código: guion = InStr(cad, «-«)) y la cantidad de caracteres a dejar en color negro está establecida por la variable lar:

 
a.Cells(x, «K»).Characters(Start:=guion + 2, Length:=lar).Font.ColorIndex = 0 ‘verde

Para colorear con verde empieza en la posición del carácter uno, recuérdese que la cadena de caracteres es («UP – LOW»), entonces «UP» está en la posición 1, desde ahí empieza a colorear las fuentes con color verde y el largo esta dado hasta donde se encontró el guion con este código (lar1 = Len(lar1)); el código es el siguiente:


a.Cells(x, «K»).Characters(Start:=1, Length:=lar1).Font.ColorIndex = 4 ‘verde

Ahora, si la celda H y fila correspondiente en el bucle for… next es menor a cero realiza lo mismo pero coloreando en rojo la palaba «LOW», para ello se debe determinar donde está el guion de ahí a la derecha colorea con rojo y a la izquierda deja en color negro o automático,

a.Cells(x, «K»).Characters(Start:=guion + 2, Length:=lar).Font.ColorIndex = 3 ‘rojo
a.Cells(x, «K»).Characters(Start:=1, Length:=lar1).Font.ColorIndex = 0 ‘verde

En caso de ser cero el valor de la celda H deja todo en color automático o negro en caso que usemos este color como color automático:

a.Cells(x, «K»).Font.ColorIndex = 0 ‘negro

Sugiero mirar el vídeo asociado para una comprensión más fácil de lo que se expone, ya que se estará viendo en forma gráfica todo lo mencionado y el resultado final de lo que se obtiene al ejecutar la macro.

Código que PERMITE DAR DOS COLORES DISTINTOS A FUENTE EN LA MISMA CELDA

Código que va en un modulo VBA Excel

Sub Formato()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Set a = Sheets(«Cartera»)
ufa = a.Range(«A» & Rows.Count).End(xlUp).Row

For x = 3 To ufa
cad = Cells(x, «K»)
guion = InStr(cad, «-«)
lar = Len(cad)
lar1 = Left(cad, guion – 2)
lar1 = Len(lar1)

If a.Cells(x, «H») > 0 Then
a.Cells(x, «K»).Characters(Start:=guion + 2, Length:=lar).Font.ColorIndex = 0 ‘verde
a.Cells(x, «K»).Characters(Start:=1, Length:=lar1).Font.ColorIndex = 4 ‘verde

ElseIf a.Cells(x, «H») < 0 Then
a.Cells(x, «K»).Characters(Start:=guion + 2, Length:=lar).Font.ColorIndex = 3 ‘rojo
a.Cells(x, «K»).Characters(Start:=1, Length:=lar1).Font.ColorIndex = 0 ‘verde
ElseIf a.Cells(x, «H») = 0 Then
a.Cells(x, «K»).Font.ColorIndex = 0 ‘negro
End If
Next x

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub



 

LINK PARA DESCARGA MACRO PARA DAR FORMATO A FUENTE CON DOS COLORES EN UNA MISMA CELDA Y DEPENDIENDO DE VALOR DE OTRA CELDA

Descarga el fichero usado como ejemplo en este post y en el vídeo explicativo, el mismo es totalmente gratuito y su uso es libre, solicito aportar para sostener esta web, si está dentro de tus posibilidades, desde ya muchas gracias.

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Donate:
👉⏩ Cuenta Paypal: https://paypal.me/programarexcel

👉⏩ Cuenta Bitcoin: 1KBGGb8fyDzyR3X1Rie6m7VguzaAfngNbd

👉⏩ Cuenta Ether: 0x41Bbd24556914C83a31217eBb3BC49789b66e407

👉⏩ Cuenta Skrill: marcrodos@yahoo.es

👉⏩ Cuenta Neteller: marcrodos@yahoo.es

👉⏩ Apoya mi trabajo https://www.patreon.com/programarexcel

👉⏩ Sígueme en DTube: https://d.tube/#!/c/programarexcel01

👉⏩ Sígueme en Odysee: https://odysee.com/@programarexcel:3