Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Cambiar un color de letra en función de la fecha

| 2 comentarios

Para poder cambiar el color a la fecha podemos hacer este cambio a la fuente como también hacerlo a la celda.  Podemos visualizar el código el VBA creando una macro y grabándola mientras hacemos la operación:

Primero ingreso la fecha mediante la función DateValue y creo la macro para cambiar el color a la letra

excel1

Entonces grabo la macro y obtengo el siguiente código en VBA

Sub Cambiarcoloralafecha()
'
' Cambiarcoloralafecha Macro
'
'
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
End Sub

Pero también podemos programar desde VBA pudiendo elegir el color de fuente que deseemos mediante el código RGB ingresando el siguiente código :

Sub Cambiarcolor()
Range("A1").Value = "=DATE(2013,2,14)"
Range("A1").Font.Bold = True
Range("A1").Font.Color = RGB(125, 125, 0)
End Sub

Y al correr el código obtenemos el siguiente resultado

excel 2

Podemos variar el resultado con el color que deseemos mediante el código de RGB, pero ¿cuales son los códigos de cada color?

Ingresamos al icono de fuente :

excel 3

y nos aparecerá la siguiente ventana la cual contiene los códigos RGB podemos elegir el color deseado y automáticamente se actualizará el código RGB , el cual esto lo podemos usar para ingresarlo al VBA.

excel 4

También podemos cambiar volver a ingresar un código para volver al color automático de la fuente. Ingresando el siguiente código al VBA:

ActiveCell.FormulaR1C1 = "=DATE(2013,2,14)"
With Selection.Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
Range("A1").Select
Selection.Font.Bold = False

Y obtenemos el siguiente resultado en Excel

excel 5

En el primer procedimiento habíamos  observado como poder cambiar el color de la letra de la fecha, con el siguiente código podemos realizar la misma operación:

Sub Cambiarcoloralafehca()
' Cambiarcoloralafehca Macro
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
End Sub

Obteniendo el siguiente resultado:

excel 6

Así como podemos cambiar el color de la fuente podemos crear una macro que pueda detectar si la fecha indicada en la hoja de Excel es mayor a la fecha actual, el cual al detectarla automáticamente cambie de color la celda, de tal manera resaltando la fecha mayor a la  que indica el ordenador.

Para ello ingresamos el siguiente código:

Sub Colorfechamayor()
If ActiveCell.Value > Date Then
ActiveCell.Interior.ColorIndex = 3
Else
ActiveCell.Interior.ColorIndex = xlNone
End If
End Sub

Obteniendo el siguiente resultado:

excel 7

La fecha en el ordenador indica 14 de febrero pero al ingresar una fecha mayor a esta automáticamente cambia de color al activar la macro.

Podemos utilizar esta función para cambiar el color de letra o celda en caso de que tengamos una hoja de calculo con un listado de fechas en el que queramos detectar las fechas que sean mayores a la actual o menores o de una fecha que podamos establecer, además  podemos usar esta función para poder resaltar fechas importantes que podamos encontrar en la hoja de cálculo de Excel. Para ello en los códigos que tengamos “Range” debemos agregar las celdas que queremos analizar por ejemplo: Range(“A1:L40”) de esta manera seleccionamos varias celdas a la vez y aplicamos la macro que deseamos al mismo tiempo.

 

Nombre: Liz Aguilar Velazco

2 comentarios

  1. Agradecería mucho su ayuda, estoy buscando remarcar en Negritas dentro de una formula de CONCATENAR, la frase "DETERMINADO DE 30 DÍAS" pero no encuentro manera e intenté con la Macro, pero no le encontré.

    =CONCATENAR("PRIMERA: Ambas partes declaran y otorgan que este contrato se celebra por tiempo DETERMINADO DE 30 DÍAS, del día ",TEXTO(CAPTURA!G8,"DDDD")," ",TEXTO(CAPTURA!G8,"DD")," de ",TEXTO(CAPTURA!G8,"mmmm")," de ",TEXTO(CAPTURA!G8,"aaaa"),", hasta el día ",TEXTO(CAPTURA!J8,"DDDD")," ",TEXTO(CAPTURA!J8,"DD")," de ",TEXTO(CAPTURA!J8,"mmmm")," de ",TEXTO(CAPTURA!J8,"aaaa"),", por lo que sólamente podrá suspenderse, rescindirse o terminarse en los supuestos previstos por la Ley Federal del Trabajo, el Reglamento Interno de Trabajo y el propio contrato.")

    Esta fórmula está en un agrupamiento de celdas de la A33:H36.

    Espero puedan ayudarme, muchas gracias

    Aloxus

  2. Estoy iniciándome con VBA e intento concatenar el contenido de varias columnas conservando sus fuentes (tamaño, negrita, subrayado, mayús. y color. Consigo concatenar todas las columnas, pero no me conserva orden con el color. Para que no sea muy largo te paso la primera secuencia, Que hago mal?
    Gracias

    Application.ScreenUpdating = False
    Dim Celda As Range
    For Each Celda In Range("C5:C369")
    With Celda
    .Value = .Offset(, 1) & " " & .Offset(, 2) & " " & .Offset(, 3) & " " & .Offset(, 4) & " " & .Offset(, 5)
    With .Characters(Len(.Offset(, 1))).Font
    .ColorIndex = Celda.Offset(, 1).Font.ColorIndex
    .Bold = Celda.Offset(, 1).Font.Bold
    .Italic = Celda.Offset(, 1).Font.Italic
    .Name = Celda.Offset(, 1).Font.Name
    .Size = Celda.Offset(, 1).Font.Size
    .Underline = Celda.Offset(, 1).Font.Underline
    End With

Deja una respuesta

Los campos requeridos estan marcados con *.