Macro para borrar color al seleccionar rango excel VBA

Ingreso valores en la columna I y colorea la fila "C" a "H" y el asunto es al borrar uno a uno los valores quita el color pero al seleccionar un rango también debe hacer lo mismo.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("I7:I1700")) Is Nothing Then
        Select Case Target
            Case 0, 62, 68, 71, 80, 87, 88, 89, 91, 93
                For Each dato In Target
                    Select Case Cells(Target.Row, "C")
                    Case "Zona1"
                    Range(Cells(Target.Row, "C"), Cells(Target.Row, "H")).Interior.Color = RGB(0, 255, 0)
                    Case "Zona2"
                    Range(Cells(Target.Row, "C"), Cells(Target.Row, "H")).Interior.Color = RGB(255, 255, 0)
                    Case "Zona3"
                    Range(Cells(Target.Row, "C"), Cells(Target.Row, "H")).Interior.Color = RGB(0, 255, 255)
                    End Select
                Next
            Case Else
                MsgBox "el código es incorrecto"
                Target = ""
                Target.Select
                Range(Cells(Target.Row, "C"), Cells(Target.Row, "H")).Interior.ColorIndex = xlNone
        End Select
            For Each dato1 In Target
            If dato1 = "" Then
            Range(Cells(Target.Row, "C"), Cells(Target.Row, "H")).Interior.ColorIndex = xlNone
            End If
            Next
    End If
End Sub

1 Respuesta

Respuesta
1

Visita:

Cursos de Excel y Macros - YouTube


Primero hay que eliminar esta línea, ya que si modificas varias celdas, entonces la macro termina si modificas más de una celda.

If Target.Count > 1 Then Exit Sub


Te paso el código actualizado:

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim c As Range, rng As Range
  '
  Set rng = Intersect(Target, Range("I7:I1700"))
  If Not rng Is Nothing Then
    For Each c In rng
      With Range("C" & c.Row).Resize(1, 6).Interior
        Select Case c.Value
          Case ""
            .ColorIndex = xlNone
          Case 0, 62, 68, 71, 80, 87, 88, 89, 91, 93
            Select Case Cells(c.Row, "C").Value
              Case "Zona1": .Color = RGB(0, 255, 0)
              Case "Zona2": .Color = RGB(255, 255, 0)
              Case "Zona3": .Color = RGB(0, 255, 255)
            End Select
          Case Else
            MsgBox "el código es incorrecto"
            Application.EnableEvents = False
            c.Value = ""
            Application.EnableEvents = True
            c.Select
            .ColorIndex = xlNone
        End Select
      End With
    Next
  End If
End Sub

Recomendaciones:

Excel vba dictionary parte 1 - YouTube

Excel buscarv. Curso de excel, excel - YouTube

Consejos para desarrollar macros . curso de excel, curso de macros, excel, macros - YouTube

Curso de Excel, equivalencias, porcentajes, impuestos, iva, área, precio más bajo, excel - YouTube

Hipervinculo excel. Curso de excel. Ir en automático a otra hoja y seleccionar la celda deseada. - YouTube

Declarar variables en vba excel. Curso de macros. - YouTube

Consejos y trucos de excel para mejorar la presentación de tus datos. - YouTube

Macros metodo find. Curso de macros - YouTube

Metodo find vba excel. Curso de macros. - YouTube


Sal u dos Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas