miércoles

Colorear facilmente la fila activa

Hola
Esta es una forma facil de pintar la fila activa en Excel mediante VBA

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Rem conseguimos la ultima celda ocupada de la columna A
uf = Range("A" & Rows.Count).End(xlUp).Row
Rem trabajaremos con Target/Objetivo
With Target
    Rem si la columna activa se localiza despues de la columna E
    Rem si la fila activa es menor que 5
    Rem si la fila activa es mayor que uf (ultima fila ocupada)
    Rem >>> entonces salir de la rutina
    If .Column > 5 Or .Row < 5 Or .Row > uf Then Exit Sub
    Rem trabajando con el rango Range("A5:E" & uf)
    With Range("A5:E" & uf)
        Rem ningun color
        .Interior.ColorIndex = xlNone
        Rem negrita desactivada
        .Font.Bold = False
    End With
    Rem trabajar con la celda/fila activa
    With Range(Cells(.Row, 1), Cells(.Row, 5))
        Rem color a 6 (amarillo)
        .Interior.ColorIndex = 6
        Rem negrita activada
        .Font.Bold = True
    End With
End With
End Sub


Espero que sea de mucha utilidad

Saludos desde Honduras

11 comentarios:

  1. muy gueno, podria hacerse lo mismo pero para las columnas? y para ambas columna y fila de la celda activa, hay muchos datos que se al macenan en columnas de año y seria un buen metodo para las presentaciones, un saludo y reitero la felicitación

    ResponderEliminar
  2. Hola
    Prueba para columna con:
    With Range(Cells(5, .Column), Cells(16, .Column))
    .FormatConditions.Add Type:=xlExpression, Formula1:=.Column = .Column
    With .FormatConditions(1)
    .Interior.ColorIndex = 6
    .Font.Bold = True
    End With
    End With
    nota: aqui se aplica formato condicional y NO color de relleno

    Saludos desde Honduras

    ResponderEliminar
  3. Hola
    Para las columnas si funciona pero tengo que poner como comentario
    ' With Range(Cells(.Row, 1), Cells(.Row, 5))
    ' Rem color a 6 (amarillo)
    ' .Interior.ColorIndex = 6
    ' Rem negrita activada
    ' .Font.Bold = True
    ' End With
    'End With
    sino da error en column ycomo comentario tambien estas dos lineas
    '.FormatConditions.Add Type:=xlExpression, Formula1:=.Column = .Column
    'With .FormatConditions(1)
    a la vez no funcionan no?
    un saludo

    ResponderEliminar
  4. Hola no se si me explico bien, perdón , copio todo el código para que me funcionen las columnas en mi archivo

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Rem conseguimos la ultima celda ocupada de la columna A
    uf = Range("A" & Rows.Count).End(xlUp).Row
    Rem trabajaremos con Target/Objetivo
    With Target
    Rem si la columna activa se localiza despues de la columna E
    Rem si la fila activa es menor que 5
    Rem si la fila activa es mayor que uf (ultima fila ocupada)
    Rem >>> entonces salir de la rutina
    If .Column > 5 Or .Row < 5 Or .Row > uf Then Exit Sub
    Rem trabajando con el rango Range("A5:E" & uf)
    With Range("A5:E" & uf)
    Rem ningun color
    .Interior.ColorIndex = xlNone
    Rem negrita desactivada
    .Font.Bold = False
    End With
    Rem trabajar con la celda/fila activa
    ' With Range(Cells(.Row, 1), Cells(.Row, 5))
    ' Rem color a 6 (amarillo)
    ' .Interior.ColorIndex = 6
    ' Rem negrita activada
    ' .Font.Bold = True
    ' End With
    'End With
    With Range(Cells(5, .Column), Cells(16, .Column))
    '.FormatConditions.Add Type:=xlExpression, Formula1:=.Column = .Column
    'With .FormatConditions(1)
    .Interior.ColorIndex = 6
    .Font.Bold = True
    End With
    End With
    End Sub
    un saludo

    ResponderEliminar
  5. Hola
    Este es el correcto

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim uf As Long
    uf = Range("A" & Rows.Count).End(xlUp).Row

    With Target

    Range("A5:E" & uf).FormatConditions.Delete
    If .Column > 5 Or .Row < 5 Or .Row > uf Then Exit Sub
    With Range(Cells(5, .Column), Cells(16, .Column))
    '''Range(Cells(.Row, "A"), Cells(.Row, "E"))
    .FormatConditions.Add Type:=xlExpression, Formula1:=.Row = .Row
    With .FormatConditions(1)
    .Interior.ColorIndex = 6
    .Font.Bold = True
    End With
    End With

    End With

    End Sub

    Saludos desde Honduras

    ResponderEliminar
  6. hola Gerson

    Muy bueno tu aporte.. permiteme un comentario, esta macro, y otras que he visto en la web. .. no mantienen el formato de color de celda.. y tampoco permiten pegar.., seria bueno si se pudiera hacer.. :), igual esta muy bueno tu aporte, es de mucha utilidad; me parece que deberia venir con la propia hoja excel... con algo asi como activar y desactivar.. creo que voy a sugerir en Excel..jajaja.. y tambien que las validaciones acepten mas condiciones y que aparezcan con la validacion tipo google..jajaja..


    gracias...
    y que estes muy bien, un maravilloso y muy feliz dia para ti..

    Silvia

    ResponderEliminar
  7. Hola Silvia
    Leete estos temas completos para ver si te sirven

    http://www.ayudaexcel.com/foro/ideas-aportes-64/colorear-facilmente-fila-activa-19403/

    Tambien este
    http://www.ayudaexcel.com/foro/macros-programacion-vba-10/solucionado-desactivar-activar-macro-boton-20943/

    Saludos

    ResponderEliminar
  8. hola Gerson, :)
    veré si puedo ver lo que me recomiendas, gracias. (me parece que tenian un problema en su página..)

    que estés muy bien..
    saludos
    Silvia

    ResponderEliminar
  9. Gerson!!!
    como estas? espero que muy bien..
    Por fin tuve tiempo de ver lo que me recomendaste, (activar y desactivar el botón de ayudaexcel) y listo, era lo que necesitaba, quizás podrías colgar la solución acá en tu página ¿? ;)

    Saludos,

    Silvia

    nota: quedo a la espera de mas novedades tuyas... :b

    ResponderEliminar
  10. Hola Silvia!

    Ese tema ya lo publique aqui, revisalo

    http://gerson-pineda-el-catracho.blogspot.com/2010/11/prueba_17.html

    Sera ese al que te refieres?

    Saludos

    ResponderEliminar
  11. no lo veo¿? buuu

    me refiero a la solución que le das activando y desactivando la macro con el botón.. agregaste un módulo..

    la dirección que me diste me manda al de colorear facilmente la fila activa..

    saludos
    Silvia

    ResponderEliminar