Office: Excel 2007 - VBA: IsDate erkennt auf True, aber CDate meckert

Helfe beim Thema Excel 2007 - VBA: IsDate erkennt auf True, aber CDate meckert in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Forum, in einer Anwendung überprüfe ich Dateinamen auf eine festgelegte Schreibweise, in der auch ein Datum enthalten sein muss. Ist diese... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von fette Elfe, 25. April 2012.

  1. fette Elfe Erfahrener User

    Excel 2007 - VBA: IsDate erkennt auf True, aber CDate meckert


    Hallo Forum,

    in einer Anwendung überprüfe ich Dateinamen auf eine festgelegte Schreibweise, in der auch ein Datum enthalten sein muss.
    Ist diese Schreibweise nicht eingehalten, fordere ich den Anwender mittels einer Input-Box zur Eingabe eines Datums auf, anhand dessen dann der Dateiname in der festgelegten Schreibweise generiert wird.
    Die Eingabe wird dafür erst an eine String-Variable übergeben.
    Das klappt soweit auch alles...

    Aber... durch einen Tippfehler bin ich auf folgendes aufmerksam geworden:
    Gebe ich als Datum "04-01-0212" anstatt "04-01-2012" ein, erkennt die Eingabeüberprüfung mittels "IsDate" dass ein Datum eingegeben wurde.
    Will ich diese Eingabe aber mit "CDate" in eine Zelle schreiben, so erhalte ich den Laufzeitfehler 1004: "Anwendungs- oder Objektdefinierter Fehler".


    Kurz gesagt:
    "IsDate(String)" ist ein Datum
    "CDate(String)" wird nicht als Datum erkannt

    (normal klappt das, aber in dem Fall halt nicht)


    Hat jemand eine Idee warum die beiden Funktionen so unterschiedlicher Meinung sind?
    Bzw. hat jemand eine Idee wie ich solche Tippfehler abfangen kann?

    Zur Verdeutlichung habe ich eine Mappe gebastelt:
    Den Anhang IsDate - CDate.xlsm betrachten


    Gruß Achim
     
    fette Elfe, 25. April 2012
    #1
  2. cpt. Nemo Erfahrener User
    Hallo Achim,

    probiere mal folgendes, gerne auch mit dem Zahlendreher im Datum:
    Code:
     ' Dateiname generieren
        strZielName = Format(strDateiDatum, "yyyy-mm-dd") & ".xlsx"
        MsgBox Year(strDateiDatum)
        '... und siehe da, es ist ein "echtes" Jahr ...
        If Year(strDateiDatum) <2000 Then
            Me.Cells(1, 1) = CDate(strDateiDatum)
        Else
            Msgbox "Fehler in der Datumseingabe!"
        End If
    Das Ganze ist ähnlich wie mit negativen Zeitangaben in Excel. Es gibt sie zwar (im Prinzip) aber Excel kann damit nichzt so umgehen, wie wir es wollen. Und Wenn einDatum kleiner ist als der 1.1.1900 kann Excel damit zwar rechnen aber du siehst selber, dass es da hakt ...

    Vielleicht hilft für das Abfangen ja auch die Funktion DateSerial(Year(strDateiDatum), Month(strDateiDatum), Day(strDateiDatum)) um einzelne Werte zu korrigieren.
     
    cpt. Nemo, 25. April 2012
    #2
  3. fette Elfe Erfahrener User
    Hallo cpt. Nemo,

    danke für Deinen Tipp.
    Eigentlich klar > es ist mal wider so einfach, dass man in betriebsblindem Zustand nicht drauf kommt...

    Die Funktion "IsDate" überprüft ob ein Datum vorhanden ist > jo ist es: auch das Jahr 212 wird als Datum erkannt
    Die Funktion "CDate" wandelt den String in ein Datum, und ich vermute dazu wird der Datumswert benutzt.
    Der Datumswert wäre im Jahr 212 aber satt im negativen Bereich... *vor Kopf batsch*

    Ich habe jetzt folgendes ergänzt:
    Code:
    ElseIf Year(strDateiDatum) < 2012 Then
        GoTo Dateidatum
     
    fette Elfe, 26. April 2012
    #3
Thema:

Excel 2007 - VBA: IsDate erkennt auf True, aber CDate meckert

Die Seite wird geladen...
  1. Excel 2007 - VBA: IsDate erkennt auf True, aber CDate meckert - Similar Threads - Excel 2007 VBA

  2. Umstellung von Office 2007 auf 2016

    in Microsoft Excel Hilfe
    Umstellung von Office 2007 auf 2016: Hallo und guten Tag, mit vba habe ich in Excel Office 2007 ein ziemlich umfangreiches Makro programmiert. Jetzt soll bei uns die Umstellung auf Office 2016 stattfinden. Muß ich damit rechnen,...
  3. Wenn funktion in VBA

    in Microsoft Excel Hilfe
    Wenn funktion in VBA: Hallo zusammen, ich habe da ein kleines Problem, wie kann ich dieses Funktion =WENN(F19="";G19;F19) in VBA Code umwandeln? Im VBA bin ich grad nicht der beste. Hoffe jemand kann mir helfen....
  4. nur Teil der Tabelle mit aktuellem Datum drucken

    in Microsoft Excel Hilfe
    nur Teil der Tabelle mit aktuellem Datum drucken: Hallo, nach vielen frustrierten Versuchen seit Ihr nun meine Hoffnung :) Ich habe ein ( meinen Augen unübersichtliches, aber von Chef so gewünschtes) Tabellenblatt auf dem unter einander für...
  5. Excel 2007 Macro/VBA

    in Microsoft Excel Hilfe
    Excel 2007 Macro/VBA: Hallo, ich bin neu hier und stecke auch schon in Schwierigkeiten. Ich möchte ein Makro erstelle das das Wort "[Compound Results (Ch1)]" und anschließend 2 Spalten darunter die beiden Spalten...
  6. Excel 2007 - VBA - Speichern durch Makro auf Server macht Probleme

    in Microsoft Excel Hilfe
    Excel 2007 - VBA - Speichern durch Makro auf Server macht Probleme: Hallo Forum, bei uns laufen die Rechner mit XP, Excel 2007 und der Server läuft noch mit Windows Server 2003. Seit ich Makros schreibe hat das Speichern via VBA bzw. das Back-Up-erstellen immer...
  7. VBA Editor in Excel 2007 - Makro Schrittweise durchlaufen springt auf Autodurchlauf

    in Microsoft Excel Hilfe
    VBA Editor in Excel 2007 - Makro Schrittweise durchlaufen springt auf Autodurchlauf: Hallo zusammen, ich habe ein Frage an die Nutzer des VBA Editors in Excel. Ich habe folgendes Verhalten beobachtet: Im Editor ist es ja möglich, mit F8 schrittweise den Code abzuarbeiten. Jetzt...
  8. Excel 2007 - mit VBA den PC ausschalten - mögliche unerwünschte Nebenwirkungen ?

    in Microsoft Excel Hilfe
    Excel 2007 - mit VBA den PC ausschalten - mögliche unerwünschte Nebenwirkungen ?: Hallo Forum, hier http://www.office-loesung.de/ftopic342940_0_0_asc.php habe ich eine Code zum ausschalten des PC mittels VBA gefunden. Dazu habe ich auch eine Beispielmappe angehängt, die...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden