Microsoft Excel

Herbers Excel/VBA-Archiv

Datum in VBA erkennen

Betrifft: Datum in VBA erkennen von: Phantom
Geschrieben am: 17.03.2016 17:34:15

Hallo liebe Helfer,

ich habe einen String im Format "Month Day, Year", diesen lese ich aus einer Textdatei ein.
Wenn ich diesen Wert, beispielsweise "Mar 14, 2016" in eine Zelle schreibe, erkennt Excel automatisch, dass es ein Datum ist. Wenn ich die Zelle dann im Format dd.mm.yyyy" formatiere, wird das Datum wie gewünscht (14.03.2016) angezeigt.

Den gleichen Effekt möchte ich nun direkt in VBA bewirken, da ich dort einen Abgleich mit einem Datumsstring im Format dd.mm.yyyy machen möchte.

Dim sDate1 as String
Din sDate2 as String

sDate1 = "Mar 14, 2016"
sDate2 = "13.03.2016"

if sDate1 <> sDate2 Then
do something
end if

Beide Daten werden über eine Textdatei eingelesen und sind deswegen Strings. Eventuell gibt eine Konvertierung zu Date vor dem Vergleich Sinn.

Vielen Dank und herzliche Grüße
Phantom

  

Betrifft: AW: Datum in VBA erkennen von: Daniel
Geschrieben am: 17.03.2016 17:41:12

Hi

mit der Funktion CDate() kannst du einen Text, der wie ein Datum aussieht in ein Datum wandeln:

If CDate(sDate1) <> CDate(sDate2) Then
mit IsDate() kannst du prüfen, ob der Textstring überhaupt in ein Datum wandelbar ist (die Prüfung kann ggf erforderlich sein, da CDate() einen Fehlerabbruch erzeugt, wenn der Text nicht in ein Datum wandelbar ist)

Gruß Daniel


  

Betrifft: AW: Datum in VBA erkennen von: Phantom
Geschrieben am: 17.03.2016 18:41:25

Hallo Daniel,

vielen herzlichen Dank für deine Antwort. Leider kann CDate den String "May 14, 2016" nicht in ein Datum wandeln (Typen unverträglich).

Folgendes funktioniert, aber wie gesagt, ich benötige ähnliches in VBA. Gibt es eine einfache Methode oder muss ich den String zerteilen?

Dim sDate1 as String
sDate1 = "Mar 14, 2016"
Worksheets(1).Cells(1, 1).Value = sDate1
Worksheets(1).Columns(1).NumberFormat = "dd.mm.yyyy"



  

Betrifft: AW: Datum in VBA erkennen von: Daniel
Geschrieben am: 17.03.2016 18:56:12

Hi

die Umwandlungsfunktionen CDate oder auch DateValue benötigten die landestypischen Schreibweisen, dh in Deutschland für den 5. Monat "Mai" oder für den 8. Monat "Oktober".

wenn die Texte im englischen Format vorliegen ("May", "October") wüsste ich jetzt für VBA keine Umwandlungsfunktion, die dieses verwendet, ausser der von dir schon gezeigten Methode, den Wert in die Zelle zu schreiben, und die automatische Umwandlungsfunktion von Excel zu nutzen, denn diese wendet das englische Schema an, wenn die Werte von VBA kommen.

die alternativen Lösungen wären, die Monatsbezeichungen per Replace durch deutsche Monatsbezeichnungen zu ersetzen, oder eben den String zu zerlegen und dann das ganze ausprogrammieren.

Gruß Daniel


  

Betrifft: AW: Datum in VBA erkennen von: Sanjoy
Geschrieben am: 20.03.2016 11:31:35

Vielen Dank!


 

Beiträge aus den Excel-Beispielen zum Thema "Datum in VBA erkennen"