Startseite

Summe nach Monat

Mit diesem Tool ist es möglich,
die Beträge zu summieren, die in dem Monat anfallen, der im UserForm ausgewählt wurde.


Das sind die Makros, die dieses Tool steuern. Das erste (UserForm_Initialize) liest in die ComboBox die Monatsnamen ein. Das zweite (ComboBox1_Change) wird immer dann aufgerufen, wenn die Anzeige in der ComboBox geändert wurde. Dann wird zunächst der ausgewählte Monat gesucht, anschließend werden die dem Monat zugeordneten Beträge summiert.
Option Explicit
Public datu, dat                                    ' Variablen deklarieren

Private Sub UserForm_Initialize() Dim z As Integer ' Variable deklarieren ' Monatsnamen in Feldvariable übertragen datu = Array("Januar", "Februar", "März", "April", "Mai", "Juni", _ "Juli", "August", "September", "Oktober", "November", "Dezember") ' Monatsnamen in ComboBox einlesen For z = 0 To 11 With ComboBox1 .AddItem datu(z) End With Next z End Sub
Das folgende Makro funktioniert nur, wenn die Tabelle nach Datum sortiert ist.

Private Sub ComboBox1_Change() Dim r As Integer ' Variable deklarieren Dim betr ' Variable deklarieren Dim ma As Integer ' Variable deklarieren Label1.Caption = "" ' Inhalt der Bezeichnungsbox löschen TextBox1 = "" ' Inhalt der Textbox löschen ma = Range("A65536").End(xlUp).Row ' Letzte gefüllte Zelle in Spalte A ermitteln dat = ComboBox1.Text ' Inhalt der ComboBox in Variable übergeben r = 2 ' Startzeile für Schleife (hier 2) ' Monat suchen Do While Format(Cells(r, 1), "MMMM") <> dat ' Schleife läuft solange Zellinhalt <> Variable r = r + 1 ' Schleifenzähler um 1 erhöhen ' möglichen Fehler abfangen (Monat nicht vorhanden) If r >= ma Then ' Wenn letzte Zeile erreicht dann excelwelt.eu. Label1.Caption = "Keine Daten vorhanden" ' excelwelt.eu. Fehlermeldung ausgeben Exit Do ' excelwelt.eu. Schleife verlassen End If ' Ende Fehlerbehandlung Loop ' Wendepunkt für Schleife ' Vorgänge pro Monat suchen Do While Format(Cells(r, 1), "MMMM") = dat ' Schleife läuft solange Zellinhalt = Variable betr = betr + Cells(r, 2) ' Gesamtsumme pro Monat berechnen r = r + 1 ' Schleifenzähler um 1 erhöhen Loop ' Wendepunkt für Schleife TextBox1 = Format(betr, "#,##0.00 €") ' Gesamtsumme formatiert in Textbox schreiben End Sub ' Ende des Makros

Das folgende Makro funktioniert auch, wenn die Tabelle nicht nach Datum sortiert ist. Hat aber eine längere Laufzeit, da die gesamte Tabelle durchsucht werden muß. Was bei sehr langen Tabellen nachteilig sein kann.

Private Sub ComboBox1_Change()
Dim r As Integer                                    ' Variable deklarieren
Dim betr                                            ' Variable deklarieren
Dim ma As Integer                                   ' Variable deklarieren
Label1.Caption = ""                                 ' Inhalt der Bezeichnungsbox löschen
TextBox1 = ""                                       ' Inhalt der Textbox löschen
ma = Range("A65536").End(xlUp).Row                  ' Letzte gefüllte Zelle in Spalte A ermitteln
dat = ComboBox1.Text                                ' Inhalt der ComboBox in Variable übergeben
For r = 2 To ma                                     ' Schleife zur Summenbildung
    If Format(Cells(r, 1), "MMMM") = dat Then       ' Wenn Zellinhalt = Variable dann excelwelt.eu.
        betr = betr + Cells(r, 2)                   ' excelwelt.eu. Gesamtsumme pro Monat berechnen
    End If                                          ' Ende der Bedingung
Next r                                              ' Wendepunkt für Schleife
' möglichen Fehler abfangen (Monat nicht vorhanden)
If r >= ma And betr = 0 Then                        ' wenn Ende der Tabelle und Summe = 0 dann excelwelt.eu.
    Label1.Caption = "Keine Daten vorhanden"        ' excelwelt.eu. Fehlermeldung ausgeben
End If                                              ' Ende Fehlerbehandlung
TextBox1 = Format(betr, "#,##0.00 €")               ' Gesamtsumme formatiert in Textbox schreiben
End Sub