Hallo Emre,
die Abfrage muss mit in das Makro eingebaut werden. Beim jetzigen Stand kann man erst mal nur verhindern, dass die Daten gelöscht werden. Der Eintrag des neuen Monats bleibt.
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Wenn die ersten 4 Zeichen des Blattes TEST sind
'und die geänderte Zelle C1, dann
If Left(Sh.Name, 4) = "TEST" And Target.Address = "$C$1" Then
'Sicherheitsabfrage!
If MsgBox("Sollen die Daten entfernt werden?", vbYesNo, "Zeilen Löschen") = vbYes Then
'Auf dem Blatt den Bereich C6:E36 leeren
Sh.Range("C6:E36").ClearContents
'Ende Sicherheitsabfrage!
End If
'Ende Wenn die ersten 4 Zeichen des Blattes TEST sind
'und die geänderte Zelle C1, dann
End If
End Sub
Um zu erreichen, dass der Monatseintrag bleibt, muss sich Excel irgendwo den "alten" Monat merken. Dafür gäbe es z.B. zwei Wege
- Speicherung des Monatseintrages beim Öffnen der Mappe und beim Aktivieren des Blattes sowie beim Wechsel, wenn nicht abgebrochen wird, in einer Variable
oder
- Speicherung des Monatseintrages beim Wechsel, wenn nicht abgebrochen wird, in einer Zelle.
Den zweiten Weg fände ich sicherer, da in einigen Fällen die Variable ungewollt geleert werden kann. Dafür müsstest Du eine Zelle vorsehen.
Ich habe den Eintrag hier mal nach B1 gelegt.
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Wenn die ersten 4 Zeichen des Blattes TEST sind
'und die geänderte Zelle C1, dann
If Left(Sh.Name, 4) = "TEST" And Target.Address = "$C$1" Then
'Sicherheitsabfrage!
If MsgBox("Sollen die Daten entfernt werden?", vbYesNo, "Zeilen Löschen") = vbYes Then
'Auf dem Blatt den Bereich C6:E36 leeren
Sh.Range("C6:E36").ClearContents
'Monat aus C1 nach B1 uebertragen
Sh.Cells(1, 2).Value = Cells(1, 3).Value
'Sicherheitsabfrage! Falls nein
Else
'Event-Aktionen ausschalten
Application.EnableEvents = False
'Monat aus B1 nach C1 uebertragen
Sh.Cells(1, 3).Value = Cells(1, 2).Value
'Event-Aktionen einschalten
Application.EnableEvents = True
'Ende Sicherheitsabfrage!
End If
'Ende Wenn die ersten 4 Zeichen des Blattes TEST sind
'und die geänderte Zelle C1, dann
End If
End Sub
Du wolltest bei Auswahl eines anderen Monats aber auch noch die Daten wiederherstellen, falls es da schon welche gibt? Wie in einem anderen Post schon gesagt, da müssen die auch irgendwo gesichert werden. Und dann hast Du noch das Problem, dass Deine Formeln auf dem Blatt Stundenerfassung in jedem Monat an die gleiche Stelle gehen, du hättest also von Januar bis Dezember die gleichen Werte.