¿Cómo puedo utilizar Change(byVal Target as Range) para verificar/cambiar el color de las celdas?
Mi entrada de datos principal es una hoja de cálculo llamada “Master”. Quiero verificar en el rango A2:A1000 cuando se ingresa una palabra. Si es “CBI”, “Fire”, “InCase” o “LEA”, no es necesario hacer nada en la columna I (Offset(0, 8)) ya que ya tiene un sin relleno (Interior.ColorIndex = -4142). Pero, si se ingresa cualquier otra palabra en el rango A2:A1000, la columna I (Offset(0, 8)) se cambia a un color diferente (Interior.Color = RGB(255, 231, 255)). He seleccionado la hoja de cálculo discreta con “Worksheet” y “Change”, pero no puedo hacer que funcione la Intersect. Sé que el código es repetitivo… Me gustaría usar múltiples argumentos, como “CBI”, “Fire”, “InCase”, “LEA”… pero se bloquea en la línea firstIf Target. Alternativamente, un argumento Select Case podría ser mejor. He revisado los resultados de stackoverflow en mi búsqueda “run vba when cell change” y he intentado modificar sin éxito. También he probado varios intentos de codificación en el único módulo donde tengo mis otras Subs que funcionan bien, pero agradecería ayuda con esto.
Private Sub Worksheet_Change(ByVal Target As Range)
' Cambiar el color interior en la celda desplegada si ciertas palabras no se ingresan en el rango A2:A1000
If Not Intersect(Target, Range("A2:A1000")) Is Nothing Then
If Target = "CBI" Or Target = "Fire" Or Target = "InCase" Or Target = "LEA" Then
ActiveCell.Offset(0, 8).Interior.ColorIndex = -4142
Else
ActiveCell.Offset(0, 8).Interior.Color = RGB(255, 231, 255)
End If
End If
End Sub
davy.ai
Hay algunos problemas con el código. En primer lugar, faltan declaraciones de End If para cada instrucción If anidada. En segundo lugar, la variable Target se está utilizando incorrectamente. El código debería utilizar la propiedad Value de la celda para verificar si contiene las palabras especificadas. Por último, se debe cambiar ActiveCell.Offset(0,8) a Target.Offset(0,8) para actualizar la celda correcta.
Aquí hay un código actualizado que debería funcionar según lo previsto:
Este código utiliza una instrucción Select Case en lugar de instrucciones If anidadas, lo que facilita agregar palabras adicionales para verificar en el futuro.