1.5k Aufrufe
Gefragt in Tabellenkalkulation von acerider Einsteiger_in (59 Punkte)
Hallo lieber Supporter,

ich möchte eine bedingte Formatierung mit mehr als drei Bedingungen bei einem Tabellenblatt mit Blattschutz anwenden. Dazu verwende ich folgenden Code:


Private Sub Worksheet_Change(ByVal Target As Range)

Dim rngCell As Range
Dim bytColor As Byte

' Bereich der überwacht wird
Set Target = Intersect(Target, Range("j6:an31"))
If Target Is Nothing Then Exit Sub

For Each rngCell In Target
Select Case rngCell.Value
Case "k"
bytColor = 6
Case "K"
bytColor = 6
Case "u"
bytColor = 33
Case "U"
bytColor = 33
Case "d"
bytColor = 38
Case "D"
bytColor = 38
Case "g"
bytColor = 4
Case "G"
bytColor = 4
Case Else
bytColor = 0
End Select

rngCell.Interior.ColorIndex = bytColor

Next rngCell
End Sub


Er meckert mich jetzt an, dass ein Blattschutz vorhanden ist=> Laufzeitfehler 1004, die Zeile "rngCell.Interior.ColorIndex = bytColor" wird als Fehler ausgegeben.

Wie kann ich das umgehen?

Viele Grüße & vielen Dank

Stefan

Ps. Suchfunktion hat hier nichts gebracht.....

2 Antworten

0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Stefan,

der VBA-Code sähe dann wie folgt aus.

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rngCell As Range
Dim bytColor As Byte

' Bereich der überwacht wird
Set Target = Intersect(Target, Range("j6:an31"))
If Target Is Nothing Then Exit Sub

ActiveSheet.Unprotect "Hier Dein Passwort"

For Each rngCell In Target
Select Case rngCell.Value
Case "k"
bytColor = 6
Case "K"
bytColor = 6
Case "u"
bytColor = 33
Case "U"
bytColor = 33
Case "d"
bytColor = 38
Case "D"
bytColor = 38
Case "g"
bytColor = 4
Case "G"
bytColor = 4
Case Else
bytColor = 0
End Select

rngCell.Interior.ColorIndex = bytColor

Next rngCell

ActiveSheet.Protect "Hier Dein Passwort"

End Sub
Trage Dein Passwort in den Zeilen

ActiveSheet.Unprotect "Hier Dein Passwort"und

ActiveSheet.Protect "Hier Dein Passwort" dort ein, wo jetzt "Hier Dein Passwort" (Anführungszeichen müssen stehen bleiben) ein.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von acerider Einsteiger_in (59 Punkte)
Hallo Oliver,

vielen Dank, funktioniert, Du hast mir sehr weitergeholfen!

Viele Grüße & ein schönes Wochenende

Stefan
...