Datum in String konvertieren

  • Excel

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von zn-gong.

    Datum in String konvertieren

    Hallo Leute,

    habe heute schon das halbe Internet abgesucht aber nichts zu meinem Problem gefunden, es ist wie folgt:

    Ich habe eine Variable dessen Zelle als "Datum" formatiert ist, sieht so aus "TT.MM.YYYY" nur ohne ".

    Ich besitze nun eine Abfrage, in der eine Zeile (ein Datum) aus einer Datei ausgelesen wird. Der Text in dieser .bld Datei ist natürlich ein String und erscheint im Makro in "".
    Diese Abfrage mache ich, jedoch läuft es auf einen Datentypen unverträglich Fehler hinaus:

    If Trim(Datum) < Trim(Pruefdatum) Then
    Meldungstext = "Datum falsch. Datum darf den " + Pruefdatum + " nicht unterschreiten"
    Stil = vbOKOnly + vbInformation
    Titel = "Info"
    Meldung = MsgBox(Meldungstext, Stil, Titel)
    ThisWorkbook.Sheets("Eingabe").Cells(AnfangsZeile, 1).Select
    GoTo Abbruch
    End If


    Das Problem liegt darin, dass der Inhalt der Variable "Datum" nicht in " steht, da es kein String ist, sondern ein Date und der Inhalt von Pruefdatum in " steht.

    Wie kriege ich das Problem gelöst? Ich suche vergeblich nach einer Funktion um das Datum in einen String zu konvertieren, sodass dieser in " steht.

    Gruß

    chimperator
    Ich habe nur den Systax der Funktion mit der Belegung für Dein Problem angegeben. Da steht nichts davon, dass es eine Variable oder eine Zelle ist.
    Wo Du die Funktion nutzt musst Du schon entscheiden.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Ich verstehe dein Problem nicht ganz, auch wenn ich noch nie was in VBA gemacht habe. Zelle einlesen, in Variable speichern, Umwandeln und den neuen Wert der Zelle zuweisen. Korrigiert mich wenn das in VBA nicht so geht (das würde mich aber schon sehr wundern). Umwandeln in String geht so:

    Visual Basic-Quellcode

    1. Cstrg (e As Object)
    Hättest du aber auch in MSDN nachschauen können.
    So wie ich das verstehe, willst du einen String, in dem ein Datum steht (z. B. "13.09.2010") in ein Datum umwandeln. Das geht mit der DateValue-Funktion.

    Deine erste Zeile, müsste also so lauten, wenn Pruefdatum auch ein String ist:

    Visual Basic-Quellcode

    1. If DateValue(Trim(Datum)) < DateValue(Trim(Pruefdatum)) Then
    Mit CDate hat es bei mir funktioniert:

    Visual Basic-Quellcode

    1. Dim x As String, d As Date
    2. x = "12.05.2010 17:03"
    3. d = CDate(x)
    4. MsgBox d 'Es wird folgendes ausgegeben: 12.05.2010 17:03:00
    5. MsgBox d + 1 '13.05.2010 17:03:00
    6. MsgBox d + TimeSerial(1, 0, 0) '12.05.2010 18:03:00


    Bei der Umwandlung wird das im Betriebssystem festgelegte Datumsformat verwendet.

    Ich habe gerade zum Testen das Standard-Datumsformat in der Systemsteuerung auf "JJJJ-MM-DD" umgestellt. Danach hat obiger Code nicht mehr funktioniert (In der Zeile mit CDate kam eine Fehlermeldung). Vielleicht liegt ja da dein Problem.

    EDIT: Was soll eigentlich der Tiffany-Link?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „roddy“ ()

    Um dass aktuelle Datum in meine messagebox auszugeben würde ich Folgendes machen:

    Visual Basic-Quellcode

    1. Try Dim DateString as StringDateString = cstr(Date.Now)Messagebox.Show(DateString,"Aktuelles Datum")Catch ex as exeptionmessagebox.show(ex.message,"Oh Nein, ein Fehler istz aufgetreten)FinallyMessagebox.Show("Die Prozedur wurde beendet")end try



    Der Coode hat eine Fehler Behebung und noch Weitere Coode Blöcke Integriert, geht aber 100% :)