Zeitberechnungen
#1
Hallo,

bezüglich der Zeitberechnungen möchte ich von euch folgendes wissen:

1. Wie berechnet man per VBA bei einem gegebenem Datum, der wievielte Tag des Jahres es ist?

2. Wenn ich 2 Datumwerte gegeben habe, wie berechne ich dann per VBA die Differenz in Tagen?

Danke.
Top
#2
Moin!
1.:
Code:
MsgBox "Heute ist der " & Date - DateSerial(Year(Date), 1, 0) & "ste Tag des Jahres"

Die zweite Frage hast Du hoffentlich nicht Ernst gemeint, oder?

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#3
@Ralf
a. Danke
b. So trivial ist die Zeitdifferenz zwischen 2 Tagen aber auch nicht oder? - Für euch Experten natürlich schon, aber ich musste nachschlagen!

Debug.Print DateDiff("d", "01.01.2017", "13.06.2017")
Top
#4
Moin!
Zitat:So trivial ist die Zeitdifferenz zwischen 2 Tagen aber auch nicht oder?

Doch, ist sie!  :19:
Datediff() mit "d" ist Quatsch!
Code:
Debug.Print DatumSpaet - DatumFrueh

(Deins ermittelt übrigens nicht den x-ten Tag des Jahres)

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#5
@Ralf
Code:
Debug.Print DatumSpaet - DatumFrueh

Erkläre das bitte  einer VBA - Analphabetin etwas ausführlicher.
Top
#6
Gerne!
(das Debug.Print hast Du ja selbst in Deinem Code, daher habe ich das ohne Erklärung übernommen)
Du solltest die Daten in Variablen speichern und den Datumstext explizit mittels CDate() in ein Datum umwandeln.
Dann bist Du immer auf der sicheren Seite.
Und wie bereits geschrieben:
Datediff() mit "d" ist flüssiger als Wasser!

Code:
Sub RPP()
Dim DatumSpaet As Date, DatumFrueh As Date
DatumSpaet = CDate("13.06.2017")
DatumFrueh = CDate("01.01.2017")
Debug.Print DatumSpaet - DatumFrueh
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#7
Hallo Elke,
Sub aaa()
 Debug.Print DateDiff("d", "01.01.2017", "13.06.2017")
 Debug.Print CDate("13.06.2017") - CDate("01.01.2017")
End Sub
@Ralf, warum ist DateDiff Quatsch?

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Elke Boese
Top
#8
Ich schrieb, dass Datediff mit dem Argument "d" Quatsch ist.
(nicht für Dich, Uwe):
Datum ist eine serielle Ganzzahl,
daher ist die Differenz zweier Daten in Tagen eine simple Subtraktion beider Daten.
Dafür brauche ich doch keine extra Funktion?
Datediff() mit den anderen Argumenten hat ja seine Berechtigung, aber ich bleibe dabei, dass "d" hier überflüssig ist.

Edit:
Gut Datediff wandelt einen String in ein Datum, aber in einem Programm wandel ich dies selber um.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • Elke Boese
Top
#9
Hallöchen,

mal noch ein Hinweis. Datediff liefert nicht unbedingt das gleiche wie die Subtraktion.
Wende Datediff z.B. mal auf 15.06.17 23:59 bis 16.06.17 00:01 an und auf 16.06.17 00:01 bis 16.06.17 23:59. Vergleiche das dann mit der Subtraktion Smile Je nach Fragestellung kann das aber auch angewendet werden.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste