thekbrothers Geschrieben 29. November 2005 Geschrieben 29. November 2005 hallo! hab hier ein modul das über das worksheet so aufgerufen wird. Private Sub Worksheet_Change(ByVal Target As Range) Call ZellenAendern(Target, Target.Address) End Sub Public Sub ZellenAendern(inhalt, zelle As String) 'Farben definieren laut PatternColorIndex-Eigenschaften (xlPatternNone = ohne Füllung) rot = 3 blau = 5 grün = 4 'Wenn Eingabe der folgenden Buchstaben dann Select ausführen Select Case inhalt Case "u", "U" Range(zelle).Select 'Zelle mit U selektieren With Selection.Interior .ColorIndex = rot 'Innenfüllung rot .Pattern = xlSolid End With Case "G", "g" Range(zelle).Select 'Zelle mit G selektieren With Selection.Interior .ColorIndex = rot .Pattern = xlSolid End With Case "S", "s" Range(zelle).Select 'Zelle mit S selektieren With Selection.Interior .ColorIndex = blau 'Innenfüllung blau .Pattern = xlSolid End With Case "D", "d" Range(zelle).Select 'Zelle mit D selektieren With Selection.Interior .ColorIndex = blau .Pattern = xlSolid End With Case "X", "x" Range(zelle).Select 'Zelle mit X selektieren With Selection.Interior .ColorIndex = grün 'Innenfüllung grün .Pattern = xlSolid End With Case Else Range(zelle).Select 'Default Wert With Selection.Interior .ColorIndex = xlNone 'Keine Füllung .Pattern = xlSolid End With End Select MsgBox (inhalt.Value) End Sub Das Modul wird in einer Abwesenheitsverwaltung in Excel eingesetzt. Trägt man einen Wert aus dem Select in eine Zelle ein, verändert sich die Hintergrundfarbe. Hat man sich in der Abwesenheitsverwaltung vertippt, kann man eine Zelle ja ganz normal mit Entfernen löschen. Dadurch wird ja das Case else aufgerufen. Wenn ich aber mehrere Zellen markiere und diese löschen will, bekomme ich einen Laufzeitfehler (Fehler 13) Typen unverträglich. Wie kann ich das abfangen, dass das ganze auch funktioniert, wenn mein Range größer als eine Zelle ist. Problem verstanden? Ich komme irgendwie nicht weiter. Googeln bringt irgendwie nix. Habe auch nichts vergleichbares hier gefunden. Bitte um Hilfe. MfG thekbrothers Zitieren
Amstelchen Geschrieben 29. November 2005 Geschrieben 29. November 2005 1. wäre fein, wenn du einrückungen und code-tags verwenden würdest (farbe wird ja aufgrund der VBA-umgebung schwer reinzubringen sein). 2. verwende On Error Resume Next, dann überspringt er den fehler 13 und markiert mit mehrfachauswahl gelöschte felder rot. s'Amstel Zitieren
thekbrothers Geschrieben 29. November 2005 Autor Geschrieben 29. November 2005 hey amstelchen, danke für die glorreichen tipps. wo mach ich das on error resume next rein? Zitieren
Amstelchen Geschrieben 29. November 2005 Geschrieben 29. November 2005 Public Sub ZellenAendern(inhalt, zelle As String) On Error Resume Next '... End Sub die "on error"-behandlung gehört normalerweise an den beginn einer funktion oder an die stelle, ab der die fehlerbehandlung geschehen soll. s'Amstel Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.