In diesem Beitrag erfahren Sie, wie Sie mithilfe von VBA (Visual Basic for Applications) die Anzahl der Tage vom aktuellen Datum bis zum Jahresende berechnen können. Dabei wird ein Datum in einer Zelle angegeben und der Zeitraum bis zum 31. Dezember korrekt ermittelt, wobei Schaltjahre automatisch berücksichtigt werden.
Das Makro lässt sich flexibel anpassen, sodass das Datum nicht nur aus einer Zelle gelesen, sondern auch beispielsweise über eine InputBox oder andere Methoden eingegeben werden kann. Zudem zeige ich Ihnen, wie Sie die Berechnung in einer benutzerdefinierten Funktion auslagern können, um diese direkt in Excel-Tabellen zu verwenden.
VBA Makro: Tage bis zum Jahresende
Das folgende Makro berechnet die Tage bis zum Jahresende anhand eines Datums, das in Zelle A1 eingetragen ist. Es berücksichtigt automatisch, ob es sich um ein Schaltjahr handelt, indem es den 29. Februar einbezieht, falls vorhanden.
Public Sub anz_tage_bis_jahresende()
datum = Sheets(1).Range("A1").Value ' Datum aus Zelle A1 auslesen
jahr = Right(Range("A1"), 4) ' Jahr aus dem Datum extrahieren
tage = (DateDiff("d", "31.12." & jahr, Range("A1"))) * -1 ' Differenz der Tage bis zum Jahresende berechnen
MsgBox "Es sind noch " & tage & " Tage bis zum 31.12." & jahr ' Ergebnis anzeigen
End Sub
Erläuterung des Codes:
- datum: Liest das Datum aus Zelle A1 aus.
- jahr: Extrahiert das Jahr aus dem Datum, um sicherzustellen, dass der 31. Dezember des richtigen Jahres verwendet wird.
- tage: Berechnet die Differenz zwischen dem aktuellen Datum und dem Jahresende mithilfe der DateDiff-Funktion. Die Multiplikation mit -1 sorgt dafür, dass das Ergebnis positiv ist.
- MsgBox: Zeigt eine Meldung mit der Anzahl der verbleibenden Tage bis zum Jahresende an.
Anpassungsmöglichkeiten:
Statt das Datum aus einer festen Zelle (A1) zu lesen, können Sie auch eine InputBox verwenden, um das Datum direkt einzugeben:
Public Sub anz_tage_bis_jahresende_inputbox()
datum = InputBox("Bitte ein Datum eingeben (TT.MM.JJJJ):")
jahr = Right(datum, 4)
tage = (DateDiff("d", "31.12." & jahr, datum)) * -1
MsgBox "Es sind noch " & tage & " Tage bis zum 31.12." & jahr
End Sub
Benutzerdefinierte Funktion: Tage bis Jahresende
Sie können die Berechnung der Tage auch in eine benutzerdefinierte Funktion auslagern, um diese direkt in Excel-Zellen zu verwenden. Hier zeige ich Ihnen, wie das funktioniert:
Function TAGEJAHRESENDE(Zelle As Range) As Integer
Application.Volatile ' Stellt sicher, dass die Funktion bei Änderungen neu berechnet wird
datum = Zelle.Value
jahr = Right(Zelle.Value, 4)
tage = (DateDiff("d", "31.12." & jahr, Zelle.Value)) * -1
TAGEJAHRESENDE = tage ' Rückgabe des Ergebnisses
End Function
So verwenden Sie die Funktion:
- Erfassen Sie das Datum in einer beliebigen Zelle, z. B. A1.
- Geben Sie in einer anderen Zelle die folgende Formel ein:
=TAGEJAHRESENDE(A1)
Die Funktion ermittelt nun die Tage bis zum 31. Dezember des in A1 angegebenen Jahres und zeigt das Ergebnis in der Zelle an.
Erweiterungsmöglichkeiten:
- Schaltjahre automatisch berücksichtigen: VBA erkennt automatisch Schaltjahre. Sie können dies testen, indem Sie Daten wie den 28. oder 29. Februar in Zelle A1 eingeben.
- Berechnung für zukünftige Jahre: Sie können das Makro oder die Funktion so erweitern, dass sie auch für mehrere Jahre im Voraus arbeitet. Hierzu könnten Sie das Enddatum auf den 31. Dezember eines zukünftigen Jahres anpassen.
Mit diesen Anpassungen können Sie die Berechnung der Tage bis zum Jahresende in Excel flexibel und benutzerfreundlich gestalten.