Supportnet / Forum / Tabellenkalkulation
Zellfarbe per VBA
Frage
Hallo an Alle,
ich habe folgendes Problem, ich habe folgenden VBA Code in einer Exceldatei :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Select Case Target.Value
Case "OFF"
Target.Interior.ColorIndex = 31
Case "RG"
Target.Interior.ColorIndex = 3
Case "KOF"
Target.Interior.ColorIndex = 3
Case "MER"
Target.Interior.ColorIndex = 3
Case "U"
Target.Interior.ColorIndex = 10
Case "U"
Target.Interior.ColorIndex = 10
Case "U"
Target.Interior.ColorIndex = 10
Case "U"
Target.Interior.ColorIndex = 10
Case "U"
Target.Interior.ColorIndex = 10
Case "SU"
Target.Interior.ColorIndex = 10
Case Else
Target.Interior.ColorIndex = xlColorIndexAutomatic
End Select
End Sub
Dieser Code verändert die Zellfarben nach der Eingabe der jeweiligen Kürzel, wenn ich nun aber meherer Zellen markiere um die Kürzel aus den Zellen auf ein mal zu löschen, entsteht ein Laufzeitfehler. Kann einer VBA Spezies hier mir sagen ob und wie man das abstellen oder anders machen kann.
Gruß Michael
Antwort 1 von JoeKe
Hallo Michael,
setze am Anfang deines Codes:
If Target.Count > 1 Then Exit Sub
Gruß
JöKe
setze am Anfang deines Codes:
If Target.Count > 1 Then Exit Sub
Gruß
JöKe
Antwort 2 von Michael10
Hallo Jöke,
es lassen sich mit deiner Änderrung jetzt zwar die Kürzel ohne Laufzeitfehler auf ein mal löschen aber die geänderte Zellfarbe bleibt erhalten. Gibt es eine Möglichkeit das noch so ändern das beim löschen der Kürzel die Zellfarbe wieder neutral wird.
Gruß Michael
es lassen sich mit deiner Änderrung jetzt zwar die Kürzel ohne Laufzeitfehler auf ein mal löschen aber die geänderte Zellfarbe bleibt erhalten. Gibt es eine Möglichkeit das noch so ändern das beim löschen der Kürzel die Zellfarbe wieder neutral wird.
Gruß Michael
Antwort 3 von JoeKe
Hallo Michael,
so:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Count > 1 Then
Target.Interior.ColorIndex = xlNone
Exit Sub
End If
Select Case Target.Value
Case "OFF"
Target.Interior.ColorIndex = 31
Case "RG"
Target.Interior.ColorIndex = 3
Case "KOF"
Target.Interior.ColorIndex = 3
Case "MER"
Target.Interior.ColorIndex = 3
Case "U"
Target.Interior.ColorIndex = 10
Case "SU"
Target.Interior.ColorIndex = 10
Case Else
Target.Interior.ColorIndex = xlNone
End Select
End Sub
Gruß
JöKe
so:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Count > 1 Then
Target.Interior.ColorIndex = xlNone
Exit Sub
End If
Select Case Target.Value
Case "OFF"
Target.Interior.ColorIndex = 31
Case "RG"
Target.Interior.ColorIndex = 3
Case "KOF"
Target.Interior.ColorIndex = 3
Case "MER"
Target.Interior.ColorIndex = 3
Case "U"
Target.Interior.ColorIndex = 10
Case "SU"
Target.Interior.ColorIndex = 10
Case Else
Target.Interior.ColorIndex = xlNone
End Select
End Sub
Gruß
JöKe
Antwort 4 von Michael10
Hallo Jöke,
vielen Dank das ist es, Schönes WE noch.
Gruß Michael
vielen Dank das ist es, Schönes WE noch.
Gruß Michael