Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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.
Antworten 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)
Antworten 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")
Antworten 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)
Antworten Top
#5
@Ralf
Code:
Debug.Print DatumSpaet - DatumFrueh

Erkläre das bitte  einer VBA - Analphabetin etwas ausführlicher.
Antworten 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)
Antworten 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
Antworten 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
Antworten 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)
Antworten Top


Gehe zu:


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