ich bin nach einer Woche wieder zurück auf der Arbeit - deshalb die späte Rückmeldung!
Unten ist der Code zur berechnung der Schichten, der Du mir zur verfügung gestellt hast - DANKE!
Das originale Datum ist:
A1 =01.10.2005
A2 =02.10.2005
B1 =09:00
B2 =23:00
Ich habe mal ein anderer Wert zum Testen der Funktionalität eingetragen.
A1 =01.10.2005
A2 =01.10.2005 (selber Tag wie oben)
B1 =15:00
B2 =20:00
Hier müsste die erste Schichte 0 betragen und die Spätschicht 5 Stunden. Aber leider berechnet er das falsch. Kannst Du da mal bitte schauen?
Hier nochmal die Zeiten der Schichten:#
06-14 Uhr
14-22 Uhr
22-06 Uhr
Code:
__________________
Sub t()
Dim datStart As Date, datEnde As Date, datTime1 As Date, datTime2 As Date
Dim dblTage As Double, dblZeit As Double, dblGesamt As Double, dblRest As Double, dblAnzeige As Double
Dim intZähler As Integer, intTag As Integer
With Sheets("Tabelle1")
datStart = .Range("A1")
datTime1 = TimeSerial(Hour(.Range("A2")), Minute(.Range("A2")), Second(.Range("A2")))
datEnde = .Range("B1")
datTime2 = TimeSerial(Hour(.Range("B2")), Minute(.Range("B2")), Second(.Range("B2")))
End With
dblTage = (datEnde - datStart) * 24
dblZeit = (datTime2 - datTime1) * 24
dblGesamt = dblTage + dblZeit
dblRest = dblGesamt
dblAnzeige = 14 - (datTime1 * 24)
intZähler = 1
intTag = 1
Do
If dblRest <= 0 Then Exit Do
MsgBox "Tag " & intTag & " / Schicht " & intZähler & " / " & dblAnzeige & " Stunden"
dblRest = dblRest - dblAnzeige
If dblRest > 8 Then
dblAnzeige = 8
Else
dblAnzeige = dblRest
End If
intZähler = intZähler + 1
If intZähler > 3 Then
intTag = intTag + 1
intZähler = 1
End If
Loop
End
Sub