Diferente color fuente y celda según valor
Tengo una hoja de Excel y quiero que se ponga del mismo color tanto la fuente como el fondo de algunas celdas, dependiendo del valor que introduzca en ellas, y que dicho color se elimine al borrar el valor de la celda. Esto debe ocurrir solo en las celdas de ciertos rangos especificados, no en toda la hoja. A continuación copio dos modelos de códigos que he puesto en práctica. El problema es que si borro los datos de celdas contiguas, es decir, de un rango, me sale el siguiente mensaje de error: Se ha producido el error "13" en tiempo de ejecución: No coinciden los tipos. Si marco "Depurar", en la ventana del error, se marca en amarillo la línea: Case Is = "A" en el editor de Microsoft de Visual Basic. ¿Cómo lo puedo solucionar? Espero haber sido lo suficientemente explicito. (Aclaro que los códigos siguientes son copiados buscando en Internet y reformados como he podido). Muchas Gracias
Modelo a):
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Selection.Interior.ColorIndex = None
Dim icolor As Integer
If Not Intersect(Target, Range("B3:D20,F3:G20,B27:E34")) Is Nothing Then
Select Case Target
Case Is = "A"
icolor = 8
Target.Font.ColorIndex = 8
Case Is = "B"
icolor = 7
Target.Font.ColorIndex = 7
Case Is = "C"
icolor = 12
Target.Font.ColorIndex = 12
Case Is = "D"
icolor = 11
Target.Font.ColorIndex = 11
Case Is = "E"
icolor = 10
Target.Font.ColorIndex = 10
Case Else
'Cualquier cosa
End Select
Target.Interior.ColorIndex = icolor
End If
End Sub
Modelo b):
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Selection.Interior.ColorIndex = None
Dim ColorIndex As Integer
If Not Intersect(Target, Range("B3:D20,F3:G20,B27:E34")) Is Nothing Then
Select Case Target
Case Is = "A"
Target.Interior.ColorIndex = 8
Target.Font.ColorIndex = 8
Case Is = "B"
Target.Interior.ColorIndex = 7
Target.Font.ColorIndex = 7
Case Is = "C"
Target.Interior.ColorIndex = 12
Target.Font.ColorIndex = 12
Case Else
'Cualquier cosa
End Select
Salida:
End If
End Sub
Modelo a):
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Selection.Interior.ColorIndex = None
Dim icolor As Integer
If Not Intersect(Target, Range("B3:D20,F3:G20,B27:E34")) Is Nothing Then
Select Case Target
Case Is = "A"
icolor = 8
Target.Font.ColorIndex = 8
Case Is = "B"
icolor = 7
Target.Font.ColorIndex = 7
Case Is = "C"
icolor = 12
Target.Font.ColorIndex = 12
Case Is = "D"
icolor = 11
Target.Font.ColorIndex = 11
Case Is = "E"
icolor = 10
Target.Font.ColorIndex = 10
Case Else
'Cualquier cosa
End Select
Target.Interior.ColorIndex = icolor
End If
End Sub
Modelo b):
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Selection.Interior.ColorIndex = None
Dim ColorIndex As Integer
If Not Intersect(Target, Range("B3:D20,F3:G20,B27:E34")) Is Nothing Then
Select Case Target
Case Is = "A"
Target.Interior.ColorIndex = 8
Target.Font.ColorIndex = 8
Case Is = "B"
Target.Interior.ColorIndex = 7
Target.Font.ColorIndex = 7
Case Is = "C"
Target.Interior.ColorIndex = 12
Target.Font.ColorIndex = 12
Case Else
'Cualquier cosa
End Select
Salida:
End If
End Sub
1 Respuesta
Respuesta de Elsa Matilde
1