Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

(VBA) Datumsformate für verschiedene Länder

Begonnen von Ciesto, Juli 21, 2011, 02:07:30

⏪ vorheriges - nächstes ⏩

Ciesto

Hi Profis,
ich benötige mal Eure Hilfe.

In Excel habe ich ein Userform erstellt in welches der Anwender mehrere daten eingeben muß. Unter anderem muß er auch ein Datum eingeben. Soweit so gut. Das Problem ist aber, dass diese Exceldatei von vielen verschiedenen Leuten in verschiedenen Ländern, wie z.B. Italien, Spanien, Niederlande, Deutschland, Türkei und Ungarn.
Leider ist die Schreibweise eines Datums von Land zu Land unterschiedlich. Hier mal ein Beispiel:

Deutschland:   20.07.2011
Italien:      20-07-2011
Spanien:           20/07/2011
Ungarn:           2011.07.20.   (Der Punkt am Ende gehört da tatsächlich hin!)
Niederlande:   20-7-2011

Das datum ist für die gesamte Funktion extrem wichtig, denn er muß es mit hinterlegten Daten vergleichen.

Ein weiteres Problem tritt an anderer Stelle auf. Im späteren Verlauf muß Excel für einen bestimmten Artikel den dazu passenden Eintrag in einer zentral abgelegten Excel-Datei suchen/finden. Wenn es den Eintrag gefunden hat, muß es das dort hinterlegte Datum mit dem vom Anwender eingegebenen Datum vergleichen! Sollte in den Stammdaten kein datum hinterlegt sein, so soll das Makro den 31.12.2099 annehmen. Hier geht auch jedes Datum, hauptsache weit in der Zukunft.
Jetzt hab ich aber das Problem, wenn ich im Makro Code ″31.12.2099″ eingebe, dann kann Excel das nicht mehr es mit Eingaben vergleichen, die z.B. jemand aus Italien macht.

Ich hoffe, Ihr könnt mir hier helfen.

Grüße
Ciesto
  •  

MzKlMu

#1
Hallo,
das Format eines Datums ist völlig bedeutungslos, es dient nur dem Auge. Formate sind sozusagen Schall und Rauch. Ein Datum ist intern eine Kommazahl.
Der 2.7.2011 ist die Zahl 40744.

Zum Vergleich wandelst Du daher das Datum mit Cdbl in die dahinterliegende Zahl um.

CDbl(Datum) Damit kannst Du dann vergleichen.

Für das datum in der Ferne dann:
CDbl(CDate("20.07.2011"))
Oder gleich mit der Zahl 73050 (=″31.12.2099″) vergleichen

Wenn garantiert keine Uhrzeit vorkommt, kannst Du auch CInt() verwenden.

Du kannst auch zum Datumsvergleich das datum in das ISO Format (yyyy.mm.dd) umwandeln. Das mit CDbl() finde ich aber einfacher.
Gruß
Klaus
  •