2.6k Aufrufe
Gefragt in Tabellenkalkulation von fubajunkie Einsteiger_in (15 Punkte)
Hallo zusammen,

ich habe ein Problem mit der Funktion Datediff in VBA.

Ich lese mit Hilfe eines Formulars ein Startdatum und ein Enddatum aus jeweils einer Textbox aus (Format=Date). Dann versuche ich mit der Datediff-Funktion die Anzahl der Tage zu ermitteln

Startdat = Me.TBStart.Value
Enddat = Me.TBEnd.Value

Wiederholungen = DateDiff(d, Enddat, Startdat)


Leider funktioniert das aus irgendwinem Grund nicht.

Wahrscheinlich ist hier mal wieder etwas grundsätzlich falsch. Aber vielleicht weiß ja hier jemand Rat.

Vielen Dank schonmal
Holger

7 Antworten

0 Punkte
Beantwortet von mixmax Experte (2.2k Punkte)
du kannst einfach Enddat - Startdat rechnen da Excel die Datumszellen in in Tagen rechnet - gegebenenfalls wenn da Uhrzeiten mit drin sind, benutze "floor(Enddat) - floor(Startdat)" um überhänge durch nachkommastellen (0.5 ist 12 Uhr mittags) zu vermeiden
0 Punkte
Beantwortet von fubajunkie Einsteiger_in (15 Punkte)
Hallo MixMax,

leider klappt das nicht. Ich gebe als Startdat z.B. den 01.01.2011 und als Enddat den 02.02.2011 an. Dann erhält die Variable "Wiederholungen" den Wert "-971435".
Ich weiß, dass man in Excel selbst die 2 Daten einfach voneinander abziehen kann. Umso mehr wundert es mich, dass das dann in einem Makro nicht funktioniert.
0 Punkte
Beantwortet von mixmax Experte (2.2k Punkte)
wie siehts denn aus wenn du ohne die funktion datedif arbeitest sondern einfach mit fließkoma zahlen...
Problem ist eventuell die formatierung der Textbox. da ich kein Excel mehr installiert hab kann ich dir nur raten festzustellen was diese Textbox für daten enthält (Sekunden als integer oder Tage mit stunden als nachkomazahl)

wenn ich nichts passendes im internet finde, dann lasse ich die Zahl ggfs mit 1 multiplizieren und gebe sie per msgbox aus. dann reduziere den Wert um 1 Tag und schaue ob sich der wert ändert um z.B. 24*3600 oder um 1.

VBA ist eine nicht so saubere sprache wie php oder C# daher würde es mich nicht wundern wenn die textbox ein datumsformat anders speichert als eine zelle.
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :)

die variablen als date deklarieren ?

gruss nighty
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :-)

eine falsche oder nicht deklarierte variable nimmt den den typ variant an

die beiden typen unterscheiden sich folgendermassen

typ Date
64 Bit, 8 Bytes Datum und Zeit

typ Variant
Variant 128 Bit, 16 Bytes

gruss nighty
0 Punkte
Beantwortet von fubajunkie Einsteiger_in (15 Punkte)
Hallo an alle,

und vielen Dank für Eure Hilfe. Ich habe schon an mir gezweifelt.
Zum Glück hatte ich viel Zeit, bis ich endlich wieder an dem Programm arbeiten konnte.

Letztlich war es ein Fehler in der Formel. Das d bei Datediff musste in Anführungsstriche.

Wiederholungen = DateDiff("d", Enddat, Startdat)


Unglaublich an was solche Programme doch immer scheitern.

Trotzdem nochmals Danke.

Viele Grüße
Fubajunkie
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
ich hätte das "d" auch ans Ende geschrieben.

Gruß Hajo
...