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