Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1636to1640
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

Schleife mit Datum

Schleife mit Datum
09.08.2018 21:20:33
heinzs
Hallo Excelfans,
folgende Funktion soll die Dauer von Anfangzeit bis Endezeit in Sekunden ermitteln; weil später noch andere Bedingungen hinzukommen können keine Zeitfunktionen verwendet werden.
Anfangszeit und Endzeit sind im Format tt.mm.yyyy hh:mm:ss vorhanden.
Eventuell fehlt bei for i1 = anfangszeit to endezeit ein step in sekunden.
Hat jemand eine Idee?
Public Function dauer(anfangszeit As Date, endezeit As Date) As Integer
gn_1 = 0
anfangszeit = anfangszeit
endezeit = endezeit
For i1 = anfangszeit To endezeit
gn_1= gn_1+ 1
Next i1
dauer = gn_1
End Function

Danke für Hilfe!
MfG
Heinz

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ziemlich wild
09.08.2018 21:35:39
lupo1
1) "as Integer" lässt gerade mal 32765 als Rückgabe zu. Gemeinhin nimmt man daher "as Long".
2) Warum die beidem idem-Zuweisungen in der Function?
3) Hast Du Dich schon mal mit Excelzeiten befasst und sie verstanden? 1 Sekunde entspricht 1/86400
4) Was soll die Schleife (und überhaupt die Function), wo doch Ende-Anfang=Dauer ergibt? Wolltest Du mit dem PC Dein Zimmer heizen?
5) Außerdem zählst Du für Deine beabsichtigte Dauer auch noch 1 zuviel! Du solltest das Wesen der Schleife wenigstens nachvollziehen/testen.
Zeitschleife
10.08.2018 07:55:52
heinzs
Hallo Lupo1,
danke für deine Kommentare; anbei der komplette Code:
Public Function dauer(anfangszeit As Date, endezeit As Date) As Long
gn_zaehler = 0
For i1 = anfangszeit To endezeit
gn_datum = DateValue(i1)
gn_zeit = TimeValue(i1)
If Weekday(gn_datum, 2) = vbSaturday Or Weekday(gn_datum, 2) = vbSunday Then
'i1 = i1 + x so daß ich den nächsten Tag habe
Else
If Hour(gn_zeit)  18 Then
If Hour(gn_zeit)  18 Then
i1 = gn_datum + 1 + "06:00:00"
End If
Else
gn_zaehler = gn_zaehler + 1
End If
End If
Next i1
If gn_zaehler > 0 Then
dauer = gn_zaehler - 1
End If
End Function
Wie bekomme ich die For net Schleife so hin, daß sie in 1 Sekunde Schritten stept?
MfG
Heinz
Anzeige
Lies Punkt 3
10.08.2018 08:43:34
lupo1
AW: Ende - Anfang
10.08.2018 08:49:38
Fennek
Hallo,
wie Lupo in Punkt 3 sagte:
Die Zeitdifferenz ist einfach Ende - Anfang formatiert in Sekunden.
(CDbl(Ende) - CDbl(Anfang))
mfg
(End-Anf)*86400 - für Sekunden als Wert 1
10.08.2018 08:52:58
lupo1

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige