Monatsabrechnung mit fortlaufenden Kalender
#21
Danke für eure Hilfe und Ideen. Ich habe nun eine Datei erstellt mit der es gut funktioniert. Nun habe ich noch ein kleines Problem, denn ich wollte alle Einträge löschen, damit man ein neue Jahr anfangen kann. Leider tut der Code nicht. Wer findet den Fehler, bzw. wo ist der Fehler?


Blatt Januar-Dez  Jahreszahl in E4

E4= 2016 wird in allen Blättern durch den Kalender gesteuert:=kalender(A2)

Zelle C6
Zelle H7
Zelle E6
Zelle E7
Zellen C13:E43
Zellen G13 mit H13 verbunden =G13 runter bis H43

von Jan-Dez sind die Zellen alle gleich.

Nun soll mittels VBA die Zellen, wo man einen Eintrag gemacht hat alle gelöscht werden, wenn man im Blatt Kalender =kalender(A2) die Jahreszahl ändert.
Nur funktioniert der Code nicht und ich bin im VBA nicht gut.

Code im Tabellenblatt Kalender

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$A$2" Then Exit Sub
    For i = 1 To Sheets.Count
        Select Case Worksheets(i).Name
            Case Is = "Januar", "Februar", "März", "April", "Mai", "Juni", _
                "Juli", "August", "September", "Oktober", "November", "Dezember"
                Worksheets(i).Range("C3:E43").ClearContents
                Worksheets(i).Range("G13:H43").ClearContents
            Case Else
                'no action
            End Select
        Next i
    For i = 1 To Sheets.Count
        Select Case Worksheets(i).Name
            Case Is = "Januar"
                Worksheets(i).Range("C6").ClearContents
                Worksheets(i).Range("E6").ClearContents
                Worksheets(i).Range("E7").ClearContents
                Worksheets(i).Range("H7").ClearContents
            Case Else
                'no action
            End Select
        Next i
End Sub
Top
#22
Hallo,

eine Änderung im Formelergebnis löst kein Change-Ereignis aus, verwende das Worksheet_Calculate()-Ereignis.
Gruß Stefan
Win 10 / Office 2016
Top
#23
Hab ich versucht, bringt aber Fehler beim Kompilieren
Wie würde der Code denn aussehen? Was muß ich genau ändern?
Top
#24
Hallo,

Code:
Private Sub Worksheet_Calculate()
   
    For i = 1 To Sheets.Count
        Select Case Worksheets(i).Name
            Case Is = "Januar", "Februar", "März", "April", "Mai", "Juni", _
                "Juli", "August", "September", "Oktober", "November", "Dezember"
                Worksheets(i).Range("C3:E43").ClearContents
                Worksheets(i).Range("G13:H43").ClearContents
            Case Else
                'no action
            End Select
        Next i
    For i = 1 To Sheets.Count
        Select Case Worksheets(i).Name
            Case Is = "Januar"
                Worksheets(i).Range("C6").ClearContents
                Worksheets(i).Range("E6").ClearContents
                Worksheets(i).Range("E7").ClearContents
                Worksheets(i).Range("H7").ClearContents
            Case Else
                'no action
            End Select
        Next i
End Sub
Gruß Stefan
Win 10 / Office 2016
Top
#25
Danke Stefan,

leider wird der Januar und der März bei ändern der Jahreszahl im Kalender nicht gelöscht.
Auch C6, E6, E7 und H7 werden in keinem Monat gelöscht

Alle anderen Monate in C13-E43 sind OK
Im Anhang habe ich die Beispieldatei mal eingestellt. Vielleicht habe ich ja noch irgendwo einen Fehler. Der Code ist in der Tabelle Kalender, was ja doch richtig ist.

Danke


Angehängte Dateien
.xlsm   Beispieldatei.xlsm (Größe: 99,89 KB / Downloads: 10)
Top
#26
Hallo,

dann entferne mal die Leerzeichen hinter den Tabellennamen. Sieht man deutlich, wenn man die Namensliste im VBA-Editor durchsieht, überall liegt die Klammer am letzten Buchstaben an, nur bei Januar und März nicht!!!!!!! :47:
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#27
Hallo Edgar,

klappt nun. Danke
Kleiner Fehler, große Wirkung. Aud die Idee  wäre ich nie gekommen, dass es an den Leerzeichen liegt.
Nun habe ich alles was ich brauche.

Danke euch allen. Falls ich wieder mal etwas suche, weiß ich ja wo ich meine Fragen stellen kann.
LG Albertus
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste