Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1924to1928
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datum Startwert für Date und Long

Datum Startwert für Date und Long
13.04.2023 11:37:03
Thomas

Servus
ich initialisiere meine Variablen gern und speichere aus Kompatibilitätsgründen Datumswerte gern im Long-Format.
Datumsvariablen intialisiere ich gern mit dem 01.01.1900
Lässt man sich den 01.01.1900 in Excel als Standardzahl anzeigen, liefert das den Wert 1.
Initialisiere ich nun in VBA eine Long-Zahl mit 1 und wandle diese mit cdate() in ein Datum um, liefert mir das den Datumswert "31.12.1899"

Leicht zu testen mit

sub test()
msgbox cdate(1)
end sub

(sorry... weiß grad nicht, wie ich code einfüge)

Und jetzt wunder ich mich, was ist richtig, wenn ich im Sheet angezeigte Datumswerte und als Long in VBA abgespeicherte Werte als 01.01.1900 interpretieren will.

Es wäre ein Leichtes, für die long-zahl einfach 2 statt 1 zu speichern, aber da passt doch dann was nicht....

Hat da jemand eine einfache Erklärung und in sich konsistenten Workaround?

( clng(dateserial(1900,1,1)) liefert übrigens 2 , abweichend zur Anzeige im Excel-Worksheet )

Thomas

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum Startwert für Date und Long
13.04.2023 11:55:18
Thomas
Glaub, ich hab die Antwort selbst gefunden, aber vielleicht kann das jemand bestätigen
VBA interpretiert dien 29.02.1900 korrekterweise als ungültiges Datum und ignoriert diesen, während Excel dieses Datum als existent mitzählt; seh ich das richtig?
Somit ist VBA richtig, aber Excel-Worksheet-Version/Formatanzeige falsch, allerdings halt nur bis zum 01.03.1900
Thomas


AW: Datum Startwert für Date und Long
13.04.2023 12:01:07
Oberschlumpf
was is eigtl der Grund dafür, dass du Datumsvariablen mit dem "Startwert" 01.01.1900 initialisieren musst?
warum nimmst du als "Startwert" nich das jeweils aktuelle Datum, wenn es denn unbedingt einen "Datums-Startwert" geben musst, auch wenn dieser in deinen jeweiligen Berechnungen gar nicht interessant wäre?


Anzeige
AW: Datum Startwert für Date und Long
13.04.2023 13:51:51
Thomas
Gab keine speziellen Grund, warum ich gerade dieses Datum wählte. Ich wollt einfach ein Datum wählen was lange zurückliegt und mir je nach Anwendung keinen negativen Sideeffekt liefert. Also warum bei 100 oder 1000 anfangen, wenn man intuitiv auch bei 1 anfangen kann :)
Hab diese Ini-Variablen als Konstante in nem AddIn, auf welches dann viele verschiedenen Anwendungen zurückgreifen, von denen manche mit Daten aus der jüngeren oder auch weniger jüngeren Vergangenheit arbeiten.
Ich werd wohl meine Ini-Konstanten auf den 1.3.1900 ändern, dann passts...
Thomas


Anzeige
AW: Datum Startwert für Date und Long
13.04.2023 13:18:06
EtoPHG
Hallo Thomas,

Für das Einfügen von Code gibt es blauen Code pre > code > Tag über dem Erfassungs-Textframe!
Der Workaround für dein Pseudoproblem: Statt den Typ Long für Datum/Zeit Variablen den Typ Double verwenden, denn so speichert auch Zellwerte für Datum- und Zeitangaben, wobei der Zahlenteil > 0 vor dem Komma den Tag ab 1.1.1900 den Tag und der Zahlenteil hinter dem Komma die Zeit (sekundengenau) an diesem Tag bedeuten. 0 ist darum der 31.12.1899 24:00:00 der gleichzeit auch der 01.10.1900 00:00:00. Oder anders gefragt wp ist die Datumsgrenze ?
Dass der 29.2.1900 fälschlicherweise als Datumseingabe in Zellen akzeptiert wird, ist seit dem bestehen von Excel ein Fehler, der aber nie korrigiert werden konnte, weil der Fehler zu spät nach der Erstveröffentlichung von Anwendern bemerkt wurde. Würde er heute korrigiert, würden Millionen und Abermillionen von bis dahin erstellten Mappen mit Datum/Zeitangaben falsch rechnen. Um den Fehler zu umschiffen gibt es in den Optionen die Datumsbasis 1904, die eine absolute und praktisch unbrauchbare Krücke (aus selbsgebasteltem, brüchigen Waldholz ;-) darstellt.

Aber all das sollte eigentlich bei deinen Levelangaben bekannt sein.

Gruess Hansueli


Anzeige
AW: Datum Startwert für Date und Long
13.04.2023 13:55:08
Thomas
Danke
:) nicht alles is immer bekannt und bewusst, und kann sein, dass ich das mal gehört, aber noch nie gebraucht hab. Wenn nicht gebraucht, ists nicht automatisch im Vrodergrund.
Danke dennoch.
Double nutz ich bei Timestamps mit Zeit, bei reinen Datumsangaben warf mir das schon oft Fehler, weil dann auch schon Differenzen falsch gerundet wurden und falsche Tagesdifferenzen lieferten. Die genaue Rundung dazu spar ich mir dann, wenn ich nur mit longs arbeite, sobald ich zum Tag keine Zeit dazu brauche
Thomas


Anzeige
AW: Datum Startwert für Date und Long
13.04.2023 12:51:17
RPP63
Moin!
Excel hat den 1900er "Fehler" aus Kompatibilitätsgründen zu Lotus 123, anno dunnemals die führende TK.
Da Lotus kein VBA kennt, brauchte MS hierauf keine Rücksicht nehmen.
VBA kennt übrigens Daten ab dem 1.1.100
Vor 1900 sind es halt negative Zahlen.
Was ergibt
CLng(Dateserial(555, 5, 5))
Gruß Ralf


AW: Datum Startwert für Date und Long
13.04.2023 13:56:19
Thomas
Merci
und jetzt beim Stichwort "Lotus" dämmerts mir wieder.... da war mal was vor zig Jahren
Danke!
thomas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige