Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1316to1320
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

UF Arbeitszeitberechnung

UF Arbeitszeitberechnung
09.06.2013 00:50:34
chrissi
Hallo,
ich möchte die Arbeitsstunden in einer UF berechnen lasse.
Funktioniert bis die Gesamtstundenzahl über 24 liegt!
Was mache ich falsch?
Danke für Eure Hiilfe
Gruß
Chrissi
https://www.herber.de/bbs/user/85710.xlsm

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

Betreff
Datum
Anwender
Anzeige
Zeitdifferenz über 24 Std. in Textbox darstellen
09.06.2013 01:57:12
Erich
Hi Chrissi,
wenn du anstelle der VBA-Fkt. Format() die Excelfkt. TEXT benutzt, kannst du im Formatstring
die eckigen Klammern nutzen:

Sub Zeitber()
Dim mySumme As Double
On Error Resume Next
With UserForm1
mySumme = (CDate(.ComboBox3) - CDate(.ComboBox2) - CDate(.ComboBox4)) * CDbl(.ComboBox1)
On Error GoTo 0
.TextBox1.Text = WorksheetFunction.Text(mySumme, "[h]:mm")
End With
End Sub
Und wenn du die Prozedur nur in der Userform brauchst,
kannst du sie kürzer und besser wartbar im Code der UF unterbringen:

Sub Zeitber()
Dim mySumme As Double
On Error Resume Next
mySumme = (CDate(.ComboBox3) - CDate(.ComboBox2) - CDate(.ComboBox4)) * CDbl(.ComboBox1)
On Error GoTo 0
.TextBox1.Text = WorksheetFunction.Text(mySumme, "[h]:mm")
End Sub
Ich habe die Variable "mySumme" genannt, denn "SUMME" ist bereits der Namen einer Excelfunktion.
Wenn du "On Error Resume Next" verwendest, solltest du das möglichst schnell wieder aufheben.
(Hier vermeidest du damit ja nur die Prüfungen, ob sich die Eingaben in Zeiten umwandeln lassen...)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
Korrektur
09.06.2013 01:59:46
Erich
Hi Chrissi,
sorry, der untere Code war der falsche. Hier noch mal - ohne falsche Punkte:

Sub Zeitber()
Dim mySumme As Double
On Error Resume Next
mySumme = (CDate(ComboBox3) - CDate(ComboBox2) - CDate(ComboBox4)) * CDbl(ComboBox1)
On Error GoTo 0
TextBox1.Text = WorksheetFunction.Text(mySumme, "[h]:mm")
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

AW: Korrektur
10.06.2013 04:09:53
chrissi
Guten Morgen,
ich Danke Euch beiden für die Lösung, welche super funktioniert.
Hat mich echt weiter gebracht.
Gruß
Chrissi

AW: UF Arbeitszeitberechnung
09.06.2013 04:02:56
Flock
Hi Chrissi,
......
With UF
'Summe = (CDate(TextBox6) - CDate(TextBox5)) * CDbl(TextBox7)
Summe = (CDate(.ComboBox3) - CDate(.ComboBox2) - CDate(.ComboBox4)) * CDbl(.ComboBox1)
'        Überflüssig, die Zuweisung brauchst du nicht
'           .TextBox1.Text = Summe
' Das geht leider nicht. Das Format kann nicht über 24h rechnen. In VBA gibt es leider gar kein  _
'  integriertes Format, um Stunden über 24h hinaus zu addieren.
'            .TextBox1.Text = Format(.TextBox1.Text, "hh:mm")
' Das musst man sich selber "schnitzen":
.TextBox1.Text = Fix(Summe) * 24 + CDbl(Format(Summe, "hh")) & ":" & Right(Format(Summe, _
"hh:mm"), 2)
End With
.......
Beste Grüße
Flock

Anzeige
Streich es ersatzlos..
09.06.2013 04:09:25
Flock
habe grade gesehen, daß Erich ja schon "echte" Lösung hatte. An die Worksheetfunction habe ich gar nicht gedacht.
Gruß
flock

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige