Guten Abend
Ich muß eine Dezimalzahl per VBA umrechnen in Minuten. kleines Beispiel: 0,4 Stunden sind 24 Minuten. Wie kann ich das anstellen ???, hat jemad eine Tipp für mich. :-[
Danke und Gruß
Stefan
Hallo
Dim dblStd as Double, lngMinuten as Long
dblStd = 0.4
lngMinuten = int(dblStd *60)
Msgbox lngMinuten
Hallo Franz
Du hast mich mal wieder begeistert, Danke dafür.
Darf ich dir noch eine Frage nachreichen?
Ich gebe die Anfangsuhrzeit als Dezimal ein z.b 6,20 nun möchte ich daraus die Minuten errechnen die Arbeitsstunden dargestellt in z.b 4,40 in Minuten (264) nach deine Code hinzuzählen und dann das Arbeitsende als Dezimal 10,33 wieder ausgeben.
Dein Code funktoniert aber für mich Nachvollziehen kann ich ihn nicht wie die Dezimalzahl umgerechnet wird. Kannst du mir das in kurzen Worten erklären? Danke
Gruß Stefan
Hallo,
ich kann die Probleme die Du hast zur Errechnung dezimaler Zeiten hast, nicht ganz nachvollziehen.
Eine Stunde hat 60 Minuten, demzufolge sind 0,1 dezimale Stunden 6 Minuten. (60*0,1).
4,4 Stunden = 4,4*60=264 Minuten.
Auch in Deiner Beispielrechnung ist ein Fehler drin.
6,2 Stunden = 372 Minuten
4,4 Stunden = 264 Minuten
---------------------------
10,6 Stunden = 636 Minuten = 10,6 Stunden und nicht 10,33
Warum machst Du es Dir so kompliziert, warum willst Du überhaupt dezimale Zeiten?
06:12 + 04:24 = 10:36
So kannst Du auch mit der Zeit rechnen.
Erfasse die Zeiten im ganz normalen Zeitformat, bzw. was stört Dich daran?
Hallo MzKIMU
Dein Ansatz habe ich ehrlich nicht bedacht, die Grundlage der Zeiterfassung kommt aus einer Excel Tabelle dort wurde die Anfangszeit 6,20 Uhr dargestellt, die habe ich übernommen ist aber für mich nicht zwingend erforderlich die Arbeitsstunden werden aber z.b 4,4 Stunden (0,1 = 6 Minuten) eingegeben = 264 Minuten oder 4 Stunden 24 Minuten.
Ergebnis: 6,20 Uhr + 4:24 = 10,44 Uhr
Danke für den Hinweiß
Gruß Stefan
Hallo,
irgendwie bringst Du gerade alles durcheinander. Du kannst doch 2 verschiedenen Zeitformate nicht einfach mischen.
ZitatErgebnis: 6,20 Uhr + 4:24 = 10,44 Uhr
Das ist falsch, entweder:
6,20 + 4,40 = 10,60=10:36
oder 6:12 + 4:24 = 10:36=10,60
Oder Du rechnest mit Minuten:
372 + 264 = 636 = 10:36 oder 10,60
Das mit den Minuten nur zur Verdeutlichung, nicht wirklich verwenden.
Das ganze wird komplizierter, wenn es über die Datumsgrenze (0:00 Uhr) geht, oder Zeiten über 24h ins Spiel kommen.
Daher solltest Du Dir die ganzen Zusammenhänge zwischen dezimalem Zeitformat und normalem Zeitformat mal sorgfältig klar machen.
Guten Morgen MzKIu
Ich bringe nichts durcheinander 6,20 oder 6:20 UHR ist meine Anfangsuhrzeit dazu werden die 4,4 Stunden = 4 Stunden 24 Minuten hin zuaddiert, da ergibt eine Enduhrzeit von 10,44 oder 10:44 Uhr
Zitat von: MzKlMu am Februar 12, 2011, 09:10:59
Zitat
Das ganze wird komplizierter, wenn es über die Datumsgrenze (0:00 Uhr) geht, oder Zeiten über 24h ins Spiel kommen.
Dem bin ich mir bewust, da her ist mein Ansatz gewesen mit Miuten zu rechnen, so könnte ich per VBA versuchen das zu berücksichtigen.
Die Datumsgrenze spielt in dem Fall keine Rolle
Gruß Stefan
Hallo,
ZitatIch bringe nichts durcheinander 6,20 oder 6:20
Doch, ziemlich heftig sogar.
6,20 ist
nicht 6:20 sondern 6:12 und 6:12 + 4:24 ist 10:36 und nicht 10:44
6,20 und 6:20 sind 2 verschiedene Werte.
6,20 = 6:12
6:20 = 6,3333333
Hallo MzKIMu
Bitte wie ich die Anfangsuhrzeit darstellen werde, könnte 6,20 Uhr oder 6:20 Uhr sein, welches Fromat ist aktuell offen ich kann und möchte es davon abhängig machen mit welchen Format ich besser weiter rechnen kann.
Fakt ist nur das die Stunden 4,4 Stunden = 4 Stunden 24 Minuten zu der Anfangszeit hin zu addiert werden muß.
Gruß Stefan
Hallo,
alles sehr verworren.
Wenn Du Zeiten addieren willst, müssen
alle Angaben ein einheitliches Format haben, entweder dezimal oder Zeit (hh:mm).
Wenn das nicht so ist, muss vorher umgerechnet werden.
Und diese Rechnung:
Zitat6,20 Uhr + 4:24 = 10,44 Uhr
ist definitv falsch, falscher geht es gar nicht.
ZitatFakt ist nur das die Stunden 4,4 Stunden = 4 Stunden 24 Minuten zu der Anfangszeit hin zu addiert werden muß.
Und die Anfangszeit ist das Problem, Du musst wissen welches Format die hat.
Hallo MzKIMu
Hab lange gebraucht bis das erreicht habe, aber die Funktion ist nun so wie ich sie benötige.
Function ZeitInMinuten(Zeit As Date) As Integer
Dim dbGStd As Double
Dim EngMinuten, GngMinuten, intMin As Integer
dbGStd = Forms!Spesen!Gesamtstunden
GngMinuten = Int(dbGStd * 60)
ZeitInMinuten = Zeit * 24 * 60
EngMinuten = ZeitInMinuten + GngMinuten
intMin = EngMinuten
Call MinutenInStd(intMin)
End Function
Function MinutenInStd(intMin As Integer) As Date
MinutenInStd = intMin / 24 / 60
Forms!Spesen!Arbeitsende = MinutenInStd
Debug.Print Forms!Spesen!Arbeitsende
End Function
Zur Erklärung der Arbeitsbeginn wird nun 06:20 Uhr (Format Zeit 24h) zerlegt in Minuten die Gesamtzeit Dargestellt als Dezimal 4,4 Stunden = 4 Stunden 24 Minuten löse ich auch in Minuten auf Addiere beide Minuten Werte zusammen und Wandel sie wieder in ein gültiges Format (Zeit 24h) 10:44 Uhr um.
Gruß Stefan
Hallo,
beide Funktionen sind schlicht und ergreifend überflüssig. Das kann eine kleine Formel als Steuerelementinhalt ratz fatz.
=[Arbeitsbeginn]+[Gesamtzeit]/24
Das Feld Arbeitsbeginn und das Ausgabefeld sind als "Zeit, 24Std" zu formatieren. Das Feld mit der Gesamtzeit braucht keine Formatierung (kann aber als Kommazahl), muss aber vom Datentyp Double sein.
Du kannst das auch in einer Abfrage rechnen.
Als Beweis habe ich Dir ein Beispiel angehängt.
[Anhang gelöscht durch Administrator]