Macro: para pintar celdas según criterio (palabra)

Estimados expertos en el tema de Programación de macros en Excel, por favor su gran ayuda.

Deseo tener el código de macro en un modulo estándar, que se debe generar cuando escribo la palabra REAL en una celda y esto a su ves se debe pintar celdas de color amarillo en la misma fila, como muestro en la imagen.

El código debe estar desde la fila 7 hasta la fila 1000.

2 respuestas

Respuesta
2

h o l a

prueba con esto 

Private Sub Worksheet_Change(ByVal Target As Range)
    'temp01
    If Not Intersect(Target, Range(" L7:L1000")) Is Nothing Then
        If UCase(Target) = "REAL" Then
        Range(Cells(Target.Row, "D"), Cells(Target.Row, "H")).Interior.ColorIndex = 6
        Else
        Range(Cells(Target.Row, "D"), Cells(Target.Row, "H")).Interior.ColorIndex = xlNone
        End If
    End If
End Sub

Gracias, funciona Bien, solo faltaría un pequeño detalle para que sea perfecto, como hacer para eliminar (suprimir) todas las palabras y no me salgue error, ya que trabajare con bastante data y no puedo estar eliminando uno por uno.

como puedo adaptar a un modulo????.

Gracias por su pronta respuesta.

Aquí va con módulo

Sub pintar()
    'temp01
    For i = 7 To 1000
        If UCase(Cells(i, "L")) = "REAL" Then
        Range(Cells(i, "D"), Cells(i, "H")).Interior.ColorIndex = 6
        Else
        Range(Cells(i, "D"), Cells(i, "H")).Interior.ColorIndex = xlNone
        End If
    Next i
End Sub

Gracias por tus respuestas, tendría una consulta final una vez que se genera la macro del módulo, como sería que se quede ejecutado, para que en la columna "L" escribo REAL y se pinte las filas automáticamente sin necesidad de ejecutar nuevamente la macro.

Gracias de antemano por la respuesta muy acertado...

Antes valora la respuesta


Macro

Private Sub Worksheet_Change(ByVal Target As Range)
    'temp01
    If Target.Row < 3 Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("L7:L1000")) Is Nothing Then
        If UCase(Target) = "REAL" Then
        Range(Cells(Target.Row, "D"), Cells(Target.Row, "H")).Interior.ColorIndex = 6
        Else
        Range(Cells(Target.Row, "D"), Cells(Target.Row, "H")).Interior.ColorIndex = xlNone
        End If
    End If
End Sub
Respuesta
2

Este es el resultado de la macro

 

Si quieres cambiar el rango solo cambia la referencia d5 de la primera línea

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas