Excel Avanzado

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

Excel Avanzado

Cambiar los colores de fondo con VBA

| 24 comentarios


Pasos para cambiar los colores de fondo de las celdas con VBA

¿Cómo se puede modificar el color de fondo de una celda utilizando Visual Basic para Aplicaciones (VBA)?

Podemos citar dos formas frecuentes en las que se puede realizar este cambio de color.

Debe utilizar la propiedad Interior de la celda y, a continuación:

  • Puede usar ColorIndex (para utilizar uno de los 56 colores "preestablecidos" de Excel): De esta forma se cambiaría el color de la celda activa.
ActiveCell.Interior.ColorIndex = 26

De esta forma se cambiaría el color de la celda activa. De esta forma le podemos cambiar de color a todo un rango de celdas.

  • O bien, puede utilizar Color:

De esta forma le podemos cambiar de color a todo un rango de celdas.

Range("A1:A6").Interior.Color = RGB(200,160,27)

Elaborado por: Eliot Vladimir

24 comentarios

  1. Amigo excelente muchas gracias

  2. y si quisiera volver a dejar la celda sin color ? como se haria?

    • color blanco RGB(255, 255, 255)

      • Range(Cells(1, 3), Cells(30, 3)).Interior.Pattern = xlNone

        ó
        Range("C,1:C30").Interior.Pattern = xlNone

        ó si es un selección de celdas
        Selection.Interior.Pattern = xlNone

        La ventaja de utilizar xlNone es que queda sin fondo alguno.

        • Correcto. Si aplicas color blanco, pierdes los bordes de la celda.

    • Seleccionas el rango .. y con la funcion with and with cambias estas estas propiedades:
      With Selection.Interior
      .Pattern = xlNone
      .TintAndShade = 0
      .PatternTintAndShade = 0
      End With

  3. De maravilla ok y muchisimas gracias

  4. Hola buen día, tengo una duda. En mi base de datos, deseo que cuando ponga abierto, se pinte la celda de rojo, en pendiente de amarillo y en cerrado de verde.
    Como hago eso de forma autómática, es decir, cuando escriba la palabra, que en automático de ponga del color que le asigné.

    Saludos, gracias y felicidades por los aportes

    • 1 Ve a inicio/formato condicional/resaltar reglas de celda/igual a... y ahi le pones

      2 coloca Abierto y elige color rojo
      3 repite el paso 1 y coloca pendiente y elige color amarillo
      4 repite el paso 1 y coloca cerrado y elige color amarillo

  5. buenas tardes , requiero de su ayuda con lo siguiente necesito colocar los resultados obtenido por vba en celdas , es decir si suma 1+2 el resultado colocarlo en un cells .. tengo un codigo pero la macro me colocas los valores apartir de la celda 50

    im ultimafila As Double
    Sheets("INDICADORES").Select
    ultimafila = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
    Cells(ultimafila + 1, 1) = indicadorisp1

  6. aMIGOS, QUIERO HACER ESTO, PERO CON LO QUE ESTE SELECCIONADO POR EL MOUSE.. QUE VA ADENTRO DEL PARENTESIS??

    Range("??????").Interior.Color = RGB(200,160,27)

    • Marco, tu código sería:

      Selection.Interior.Color = RGB(200,160,27)

    • el rango que selecciones...

  7. Hola, tengo el siguiente problema

    Tengo 2 macros: 1 para pintar un rango de celdas y otra macro para pintar el mismo rango. Necesitaria unir ambas macro para que al activar un botón en la primer seleccion despinte y cuando se vuelva a presionar pinte el rango.

    Estas son las macros actuales, agradezco si se puden unir

    Sub despintar()
    '
    ' despintar Macro
    '

    '
    Range("H3:N4").Select
    With Selection.Interior
    .Pattern = xlNone
    .TintAndShade = 0
    .PatternTintAndShade = 0
    End With
    With Selection.Font
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = 0
    End With
    End Sub
    Sub pintar()
    '
    ' pintar Macro
    '

    '
    Range("H3:N3").Select
    With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = -0.149998474074526
    .PatternTintAndShade = 0
    End With
    With Selection.Font
    .ColorIndex = xlAutomatic
    .TintAndShade = 0
    End With
    Range("H4:N4").Select
    With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorAccent2
    .TintAndShade = 0
    .PatternTintAndShade = 0
    End With
    Range("M4:N4").Select
    End Sub

  8. hola, quiero saber como colocarle color a un cierto grupo de celdas y de un color a otro grupo de celdas pero sin utilizar la opcion FORMATO CONDICIONAL, solo utilizando macros

  9. buen día a todos

    quisiera pedir de su apoyo en el siguiente caso

    tengo una base de datos (columnas) donde tengo varios porcentajes, quisiera saber como cambiar el color de fondo en el valór mínimo y maximo por ejemplo:

    A1=30%, D1=20% y F1=50%
    A2= 50, D2=10 y F2= 40%,
    .
    .
    .

    en este ejemplo quisiera que me marque de manera automática el D1 color verde y F1 color rojo del primer registro y A2 color rojo y D2 verde

    es importante mencionar que la base de datos cuenta con muchos registros por lo que necesitaría que se hiciera de manera automática

    • Hola, tienes algo de Código? si lo tienes lo miramos y yo te ayudo

  10. Hola, como hago lo siguiente:

    Tengo dos columnas "A" y "C"
    Cómo creo un evento en "Workbook" para que cada vez que pinto de rojo cualquier celda en "A" cambie el valor a cero de la columa "C".

  11. Hola, como podría hacer lo siguiente
    Necesito concatenar celdas azules en positivo y celdas rojas en negativo y que no se repitan las abreviaturas de cada una

  12. hola espero me puedan ayudar, como hacer que se sombreen en rojo las celdas que cumple con una cierta condición por eje. >=200 en una selección de celdas

    tengo este código pero me las sombrea todas no solo las que cumplen con la condición.

    Sub objetos_worksheets()
    Dim micelda As Range
    Dim a As Integer
    Dim matri(15) As Integer
    Range("a1").Select

    Selection.CurrentRegion.Select
    For Each micelda In Selection
    matri(a) = micelda.Value
    a = a + 1

    If micelda.Value >= 200 Then
    Selection.Interior.Color = RGB(237, 147, 147)

    End If
    Next micelda

    End Sub

    soy nuevo en esto del VBA y nunca había programado antes, gracias por su ayuda.

  13. Quiero aplicar ese código para un ListObjects. La idea es quitar el color de la última fila de una Tabla no quiero especificar el rango porque puede que las columnas de la tabla sean variables.

    Tengo el siguientes código:

    With ActiveSheet
    .Unprotect
    .ListObjects("T_responsables").Resize Target.CurrentRegion
    .protect
    End With
    On Error GoTo 0

    End Sub

    Quisiera que después de quitar la protección quitara el color de la última fila "T_responsables".

    Me puedes ayudar. Gracias

  14. Hola necesito hacer que un botón vinculado a una macró adquiera color cuando estoy ejecutando dicho boton para poder identificar que macro estoy aplicando, ya que tengo 3 botones iguales vinculados cada uno a su macro.

    esto se puede hacer?

    • Lo más fácil es poner una celda de control, por ejemplo, A1

      Cada que ejecutes una macro, asigna un valor en A1, o bien, colorea ese dato.

  15. Buenas tardes quisiera saber si se puede en una tabla dinamica pinchar una celda con un valor x todas las que tengan el valor x queden pintadas del mismo color??con vba??

Deja una respuesta

Los campos requeridos estan marcados con *.