PDA

Vollständige Version anzeigen : VBA: Datumsformat wird automatisch verändert..


YoungBLood
10.03.2009, 17:28
Hallo Leute...

ich lese folgendermaßen das Datum aus einer E-Mail heraus und formatiere es meinen Wünschen entsprechend:
Datum = Format(Item.SentOn, "dd/mm/yy hh:mm")

Wenn ich aber nun die Regional Settings auf dem Rechner ändere, von English auf Deutsch (ich benutze Deutsch nicht so oft wie English), und ich mein Macro leufen lasse, dann benutzt er einen . anstatt eines /, obwohl ich ihm expilzit sage, er soll ein / benutzen! *aarrgh* und ich dachte mein erstes Outlook Macro läuft schöön rund... :-(

Kann mir da jemand helfen`?

Habe auch die Suche benutzt, aber die Suche ergab keine ergebnisse zu dem Thema...

Großen Dank im Voraus.

-YoungBlood

IngGi
10.03.2009, 17:47
Hallo YoungBlood,

die Variable Datum sollte vom Typ String sein. Wenn Datum vom Typ Date ist, passiert folgendes.


Item.SentOn liefert einen Datumswert.
Die Funktion Format wandelt diesen in einen String mit dem angegebenen Zahlenformat um, also mit Schrägstrichen.
Beim Übergeben dieses Strings in die Date-Variable Datum wird der String von VBA "freundlicherweise" wieder in einen Datumswert umgewandelt. Dabei kommen dann allerdings wieder die von dir eingestellten Regionaleinstellungen zum Tragen.


Gruß Ingolf

YoungBLood
10.03.2009, 18:07
Hi IngGi,

big thanks, erstma! :)

Ich definiere aber schon das Datum als String :(
Hier die ganze Sub...
Private Sub CopyDateToClipboard(ByRef Item As Object)
If TypeOf Item Is Outlook.MailItem Then
'DataObject is part of the Microsoft Forms 2.0 Object Library - without that library the sub doesn't work because you get no access to the ClipBoard
'You need that interface Library to be able to copy objects into the ClipBoard and it doesn't matter if it is text, a picture or any other object
Dim objDatum As DataObject
Set objDatum = New DataObject

Dim Datum As String

Datum = Format(Item.SentOn, "dd/mm/yy hh:mm")
Datum = "*" & Datum
objDatum.SetText Datum
objDatum.PutInClipboard
Beep
'MsgBox (Datum)
'Set memory free...
Set objDatum = Nothing
End If
End Sub

Habe ich irgendwo, einen logischen Fehler... den ich gerade übersehe?!? *hmpf*

Besten Dank

-YoungBlood

IngGi
10.03.2009, 18:44
Hallo YoungBlood,

da bin ich baff! Den Hintergrund für dieses Verhalten kenne ich auch nicht. Würde mich aber interessieren, falls das jemand weiß. Wenn man die Schrägstriche maskiert, funktioniert's aber:
Datum = Format(Item.SentOn, "dd""/""mm""/""yy hh:mm")

Gruß Ingolf

YoungBLood
10.03.2009, 19:04
Aaah, die Maskerade rettet mich gerade! *hihi*

Ist schon echt ein Ding....
Ind er Hilfe habe ich gesehen, dass er die / als Trennung benutzt, auch wenn man die Regional Settings auf Deutsch hat. Er ersetzt dies einfach durch die dementsrechende Einstellung in den Regional Settings..... hm. big thanks...
Habs auch mit der "Maskerade" versucht, aber dabei jedesma ein & dazwischen gesetzt... und damit gehts auch nicht!

BIG Thanks...

G: Dimi