Startseite

Datum verändern - mit VBA

Wie so oft, kann man beim Rechnen mit Datum in Excel sagen: keine Regel ohne Ausnahme. In den Ausführungen über Datumsberechnungen mit Zellformeln hatte ich geschrieben: "Will man von einem Datum nur das Tagesdatum darstellen, so ist man auf dem falschen Weg, wenn versucht wird, mit so einer Formel =links(A1;2) diese Stellen "abzuschneiden". Da im Hintergrund eine ganz andere Zahl liegt, funtioniert so ein Ansatz nicht."
Diese Bemerkungen treffen nicht zu, wenn die Berechnungen über ein Makro ausgeführt werden. Die Quelltexte aus den Beispielen können kopiert und direkt im Visual Basic-Editor eingefügt werden. Diese und weitere Beipiele können aber auch im Downloadbereich herunter geladen werden.
Die folgenden Beipiele zeigen einige Möglichkeiten auf:
Sub datumberechnung()
' Schneidet die Jahreszahl von einem Datum ab und fügt eine neue hinzu
' postmaster@klaus-dieter-2000.de
 
Dim dat As Date                         ' Variable deklarieren
z = 1                                   ' Startzeile für Schleife
Do While Cells(z, 1) <> ""              ' Bedingung für Schleife
    dat = Left(Cells(z, 1), 6) & "2005" ' Wert an Variable übergeben
    Cells(z, 2) = dat                   ' Wert in neue Zelle schreiben
z = z + 1                               ' Schleifenzähler
Loop                                    ' Wendepunkt für Schleife
End Sub                                 ' Ende des Makros

Dieses Makro schneidet vom Datum die Jahreszahl ab und fügt das Jahr 2005 an. Mit der Formatierung der Variable dat als Datum, wird erreicht, daß das Ergebnis wieder im Datumformat zurückgeschrieben wird.
Sub datum_splitten()
' Trennt ein Datum  in Tag, Monat und Jahr
' postmaster@klaus-dieter-2000.de
 
z = 2                                   ' Startzeile für Schleife
Do While Cells(z, 1) <> ""              ' Start Schleife
Cells(z, 2).NumberFormat = "@"          ' Textformat für Zelle
Cells(z, 2) = Left(Cells(z, 1), 2)      ' Tag
Cells(z, 3).NumberFormat = "@"
Cells(z, 3) = Mid(Cells(z, 1), 4, 2)    ' Monat
Cells(z, 4).NumberFormat = "@"
Cells(z, 4) = Right(Cells(z, 1), 2)     ' Jahr
z = z + 1                               ' Schleifenzähler
Loop                                    ' Wendepunkt für Schleife
End Sub                                 ' Ende des Makros
 

Dieses Beipiel trennt ein Datum in Tag, Monat und Jahr.