hier muss ich mir leider Asche auf Haupt streuen (ist mir total peinlich).
Ich habe einfach nicht über den Tellerrand raus gedacht, dass in der Summe mehr als 24h rauskommen und dadurch ein Datum und Zeit entsteht.
Die Variablen timeSoll und timeIst müssen auf Double dimensioniert werden und die Zelle *24 gerechnet werden. In der Rückgabe muss das Ergebnis /24 geteilt werden und die Zielzellen müssen [hh]:mm formatiert werden.
Wenn du natürlich leere Zellen in deiner Tabelle hast kann nicht addiert werden. Deshalb der Fehler.
Ulrich möchte natürlich, dass du auch mal selbst den/die Fehler behebst.
Hier deshalb erst mal nur der von mir übersehene Teil korrigiert, damit die Summenausgabe über 24h funktioniert.
Code: Alles auswählen
Private Sub SummenAZ(ByVal FahrerSpalte As String, _
ByVal SollSpalte As String, _
ByVal IstSpalte As String, _
ByVal GesamtFahrer As String, _
ByVal GesamtSoll As String, _
ByVal GesamtIst As String)
Dim Ws As Object, i&, j&, k&, arr(), timeSoll#, timeIst#, Treffer As Variant
ReDim arr(1 To 1000)
For Each Ws In ThisWorkbook.Sheets
If IsDate(Ws.Name) Then k = k + 1: arr(k) = Ws.Name
Next
ReDim Preserve arr(1 To k)
With Tabelle3
For i = 2 To Tabelle3.Cells(Rows.Count, GesamtFahrer).End(xlUp).Row
For j = LBound(arr) To UBound(arr)
Treffer = Application.Match(.Cells(i, GesamtFahrer), Sheets(arr(j)).Columns(FahrerSpalte), 0)
If Not IsError(Treffer) Then
timeSoll = timeSoll + (Sheets(arr(j)).Range(SollSpalte & Treffer) * 24)
timeIst = timeIst + (Sheets(arr(j)).Range(IstSpalte & Treffer) * 24)
End If
Next j
.Cells(i, GesamtSoll) = timeSoll / 24: timeSoll = 0
.Cells(i, 9) = timeIst / 24: timeIst = 0
Next i
End With
SummeZeiten
End Sub
Prüfe den Zellinhalt auf <>"" vor der Additon der Zeiten von timeSoll und timeIst.
Gruß Uwe