Probleme mit dem Färben von Zellhintergrund Farben
03.09.2023 15:11:39
Dugimon
Ich habe ein Problem mit dem Färben von Zellhintergründen via VBA.
Ich habe ein Formular über das sämtliche Variablen korrekt befüllt werden und die Funktion "EZA" aufgerufen wird. Die Funktion EZA läuft mit dem ersten Code auf einen Fehler, "Anwendungs- oder Objektspezifischer Fehler" mit dem Fehlercode 1004. Dieser Tritt auf sobald die Zeile ".Range(Tag).Cells.Interior.Color = RGB(183, 222, 232) 'Himmelblau" ausgeführt werden soll.
Der zweite Code funktioniert anstandslos.
Die Funktionen "PasswortUnlock" und "PasswortLock" entfernen bzw. setzen den Blattschutz
Code der zum Fehler führt.
Function EZA(Tag, ErsterIntervall, Übersicht, Gebucht, Mitarbeiter)
Dim ErsteFreieZeile As Integer
If Range("AM8").Value = "In Planung" Then
Call Buchungen.PasswortUnlock
Else
MsgBox ("Änderungen an den gebuchten Schichten nur über die Schichtplaner möglich")
GoTo Ende
End If
With Sheets("KopierVorlage")
.Range(Tag).Cells.Interior.Color = RGB(255, 255, 255) 'Weißfärben des Hintergrunds
.Range(Tag).Font.Color = RGB(0, 0, 0) 'Schwarzfärben des Textes
.Range(ErsterIntervall).ClearComments
.Range(Tag) = "0"
.Range(Tag) = "EZA"
.Range(Tag).Cells.Interior.Color = RGB(183, 222, 232) 'Himmelblau
.Range(Tag).Font.Color = RGB(183, 222, 232)
.Range(ErsterIntervall).Font.Color = RGB(0, 0, 0)
.Range(ErsterIntervall) = "EZA"
End With
With Sheets("Übersicht")
.Range(Übersicht) = "EZA"
End With
With Sheets("Hilfstabellen")
.Range(Gebucht) = "0"
End With
With Sheets("Änderungsprotokoll")
ErsteFreieZeile = .Cells(Rows.count, 1).End(xlUp).row + 1
.Cells(ErsteFreieZeile, 1) = "Schichtplan"
.Cells(ErsteFreieZeile, 2) = Mitarbeiter
.Cells(ErsteFreieZeile, 3) = "EZA"
.Cells(ErsteFreieZeile, 4) = Date
.Cells(ErsteFreieZeile, 5) = Time
.Cells(ErsteFreieZeile, 6) = Environ("username")
End With
With Sheets("Hilfstabellen")
.Range(Gebucht) = "0"
End With
Ende:
Call Buchungen.PasswortLock
End Function
Code der Fehlerfrei durchläuft
Function EZA(Tag, ErsterIntervall, Übersicht, Gebucht, Mitarbeiter)
Dim ErsteFreieZeile As Integer
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("KopierVorlage") ' Passen Sie den Blattnamen an
If ws.ProtectContents = True Then
MsgBox "Das Arbeitsblatt ist geschützt."
Else
MsgBox "Das Arbeitsblatt ist nicht geschützt."
End If
If Range("AM8").Value = "In Planung" Then
Call Buchungen.PasswortUnlock
Else
MsgBox ("Änderungen an den gebuchten Schichten nur über die Schichtplaner möglich")
GoTo Ende
End If
If ws.ProtectContents = True Then
MsgBox "Das Arbeitsblatt ist geschützt."
Else
MsgBox "Das Arbeitsblatt ist nicht geschützt."
End If
With Sheets("KopierVorlage")
.Range(Tag).Cells.Interior.Color = RGB(183, 222, 232) 'Himmelblau
.Range(Tag).Font.Color = RGB(183, 222, 232)
.Range(ErsterIntervall).Font.Color = RGB(0, 0, 0)
.Range(ErsterIntervall) = "EZA"
End With
With Sheets("Übersicht")
.Range(Übersicht) = "EZA"
End With
With Sheets("Hilfstabellen")
.Range(Gebucht) = "0"
End With
With Sheets("Änderungsprotokoll")
ErsteFreieZeile = .Cells(Rows.Count, 1).End(xlUp).row + 1
.Cells(ErsteFreieZeile, 1) = "Schichtplan"
.Cells(ErsteFreieZeile, 2) = Mitarbeiter
.Cells(ErsteFreieZeile, 3) = "EZA"
.Cells(ErsteFreieZeile, 4) = Date
.Cells(ErsteFreieZeile, 5) = Time
.Cells(ErsteFreieZeile, 6) = Environ("username")
End With
With Sheets("Hilfstabellen")
.Range(Gebucht) = "0"
End With
Ende:
Call Buchungen.PasswortLock
End Function
Was mir klar ist, der zweite Code ist sinnvoller da ich mir das doppelte Färben der Zellhintergründe spare aber dennoch möchte ich verstehen wieso der obere Code zu einem Fehler führt.