AW: Farbliche Formatierung löschen
08.03.2015 12:03:46
fcs
Hallo Helmut,
Jetzt allerdings habe ich ein Problem: der Code von dir spricht überhaupt nicht an.
Die Zelle in der das Merker-Datum des Monats eingetragen darf nicht das Zahlenformat "Text" haben.
In meinem Beispiel waren "Jänner", "Februar", usw. die Namen der Tabellenblätter nicht die von Namen. Mir war nicht klar, dass sich alle Daten in einem Tabellenblatt befinden.
Wenn du für die Zellbereiche der Monate, die zurückgesetzt werden sollen, jeweils einen Namen definierst, dann kann man es etwa wie folgt lösen.
Gruß
Franz
Private Sub Workbook_Open()
'Makro unter DieseArbeitsmape der Datei einfügen
Dim rngMerker As Range, wks As Worksheet, rngMonat As Range
Set rngMerker = Tabelle3.Range("A1") 'Zelle in der Datum nach Monatswechsel _
zum Vergleichen eingetragen wird, kann in einem beliebigen Blatt der Datei sein. _
Die Zelle muss als Datum formatiert sein
If IsEmpty(rngMerker) Then
'Workbook wird zum 1. Mal nachem Einfügen des Makros geöffnet
rngMerker = Date
ElseIf Month(Date) Month(rngMerker.Value) Then
If MsgBox("Formatierungen der Füllfarben des vorherigen Monats jetzt zurücksetzen?", _
vbQuestion + vbOKCancel, _
"Formatierungen in Blatt """ & Tabelle3.Name & """ zurücksetzen") = vbOK Then
'Workbook wird zum 1. Mal im Folgemonat geöffnet
'Zellformatierung in Blatt zurücksetzen
Set wks = Tabelle3 'Me.Worksheets("Abwesenheiten")
With wks
'.Unprotect Password:="****"
'Namen des Bereichs (Vormonat) bestimmen in dem die Füllfarb-Formatierung zurü _
ckgesetzt werden soll.
Select Case Month(Date) 'Monat des aktuelles Datum nach Monatswechsel
Case 1 'Jänner
Set rngMonat = .Range("Dezember")
Case 2 'Februar
Set rngMonat = .Range("Jänner")
Case 3 'März
Set rngMonat = .Range("Februar")
Case 4 'April
Set rngMonat = .Range("März")
Case 5 'Mai
Set rngMonat = .Range("April")
Case 6 'Juni
Set rngMonat = .Range("Nai")
Case 7 'Juli
Set rngMonat = .Range("Juni")
Case 8 'August
Set rngMonat = .Range("Juli")
Case 9 'September
Set rngMonat = .Range("August")
Case 10 'Oktober
Set rngMonat = .Range("September")
Case 11 'November
Set rngMonat = .Range("Oktober")
Case 12 'Dezember
Set rngMonat = .Range("November")
Case Else
Set rngMonat = Nothing
End Select
If Not rngMonat Is Nothing Then
'Füllfarbe im Zellbereich des Monats ab Zeile 6 zurücksetzen
With rngMonat
wks.Range(wks.Cells(6, .Column), _
wks.Cells(.Row + .Rows.Count - 1, .Column + .Columns.Count - 1)) _
.Interior.ColorIndex = xlColorIndexNone
End With
End If
'Aktuelles Datum in Merkerzelle eintragen
rngMerker = Date
'.Protect Password:="****"
End With
End If
End If
end sub