Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Datum erzeugen | Herbers Excel-Forum

Forumthread: VBA: Datum erzeugen

VBA: Datum erzeugen
20.01.2010 11:40:09
André

Moin zusammen,
ich stehe ja immer noch mit Excel-VBA auf Kriegsfuß, daher heute mal wieder eine wahrscheinlich blöde Frage:
wie kann ich in VBA ein Datum erzeugen?
Ausgangslage: ich habe eine Variable mit einer Jahreszahl (Integer, z.B. 2009)
Ziel: ich möchte ein Datum mit dieser Jahreszahl zurückgeben (z.B. den 01.01.2009)
Das ganze soll in einer Funktion zum Einsatz kommen.
Was ich probiert habe, aber NICHT funktioniert:

Function Test(Tag As Variant)
Dim Jahr As Integer
Jahr = DatePart("yyyy", Tag)
Test = WorksheetFunction.Datum(Jahr , 1, 1)
End Function

Benutze ich diese Funktion in einer Zelle, dann kommt #WERT! als Ergebnis raus. Wer kann mir helfen?
Gruß, André

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Datum erzeugen
20.01.2010 11:42:07
Chris
Intuitiv ohne Test: Dim Jahr as Date
AW: VBA: Datum erzeugen
20.01.2010 11:47:46
André
Moin Chris,
danke für Deine Intuition, die aber leider falsch ist. Jahr ist eine Zahl, und kein Datum.
Gruß, André
AW: VBA: Datum erzeugen
20.01.2010 11:42:59
Hajo_Zi
Halo André,
Test = cdate(Jahr , 1, 1)

Anzeige
AW: VBA: Datum erzeugen
20.01.2010 11:49:06
André
Moin Hajo,
Danke! So funktionierts zwar nicht, aber Du hast mich auf die richtige Fährte gelockt.
So gehts:
Test = CDate("01.01." & Jahr)
Gruß, André
AW: VBA: Datum erzeugen
20.01.2010 11:52:47
Hajo_Zi
Hallo André,
Du hast Recht so
DateSerial(jahr,1,1)
Gruß Hajo
Anzeige
;
Anzeige

Infobox / Tutorial

Datum in VBA generieren: So funktioniert's


Schritt-für-Schritt-Anleitung

Um in VBA ein Datum zu erzeugen, kannst du die Funktion DateSerial verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Erstelle ein neues Modul: Klicke im Menü auf Einfügen und dann auf Modul.

  3. Füge den folgenden Code ein:

    Function Test(Jahr As Integer) As Date
       Test = DateSerial(Jahr, 1, 1)
    End Function
  4. Verwende die Funktion in Excel: Gehe zurück zu Excel und tippe in eine Zelle =Test(2009) ein. Das Ergebnis sollte der 01.01.2009 sein.


Häufige Fehler und Lösungen

  • Fehler #WERT!: Wenn du die Funktion in einer Zelle verwendest und den Fehler #WERT! erhältst, stelle sicher, dass die Eingabewerte korrekt sind und dass du die Funktion richtig definiert hast.

  • Jahr als Variant: Wenn du die Variable Jahr als Variant deklariert hast, stelle sicher, dass du sie vor der Verwendung in einen Integer umwandelst.


Alternative Methoden

Neben DateSerial gibt es auch andere Möglichkeiten, ein Datum in VBA zu generieren:

  • CDate: Konvertiere einen Datumstext in ein Datum. Zum Beispiel:

    Test = CDate("01.01." & Jahr)
  • DateValue: Wenn du ein Datum aus einem Text erzeugen möchtest, kannst du auch DateValue verwenden:

    Test = DateValue("01.01." & Jahr)

Beide Methoden sind nützlich, je nach Kontext der Anwendung.


Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung der Funktion:

  1. Jahr dynamisch anpassen:

    Sub Beispiel()
       Dim meinDatum As Date
       meinDatum = Test(2023)
       MsgBox meinDatum ' Gibt den 01.01.2023 aus
    End Sub
  2. Datum in einer Schleife generieren:

    Sub MehrereDaten()
       Dim i As Integer
       For i = 2000 To 2005
           Debug.Print Test(i) ' Gibt die Daten von 01.01.2000 bis 01.01.2005 aus
       Next i
    End Sub

Tipps für Profis

  • Fehlerbehandlung: Füge eine Fehlerbehandlung in deine Funktion ein, um sicherzustellen, dass ungültige Jahre oder Eingaben abgefangen werden.

  • Datumsformatierung: Wenn du das Datum in einem bestimmten Format anzeigen möchtest, kannst du die Format-Funktion in VBA verwenden:

    MsgBox Format(Test(2009), "dd.mm.yyyy") ' Gibt 01.01.2009 aus

FAQ: Häufige Fragen

1. Wie kann ich das Datum im deutschen Format anzeigen?
Du kannst die Format-Funktion verwenden, um das Datum im gewünschten Format anzuzeigen, z.B. Format(Test(2009), "dd.mm.yyyy").

2. Was ist der Unterschied zwischen CDate und DateSerial?
CDate konvertiert einen String in ein Datum, während DateSerial ein Datum auf Grundlage von Jahr, Monat und Tag erstellt. Verwende DateSerial für genaue Datumsangaben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige