Einzelnen Beitrag anzeigen
Alt 24.10.2003, 09:00   #2
Seidl
Veteran
 
Registriert seit: 10.01.2001
Beiträge: 478


Standard

Warum in die Ferne schweifen, ...


Public Sub use()
Debug.Print diff("0:0:0:2", "0:0:0:1")
End Sub

Public Function diff(a As String, b As String) As String
Dim PartsA() As String
Dim PartsB() As String
Dim ah As Long
Dim bh As Long
Dim x As Long
Dim i As Integer
Dim flag As Boolean
PartsA() = Split(a, ":")
PartsB() = Split(b, ":")
If UBound(PartsA) <> 3 Or UBound(PartsB) <> 3 Then
MsgBox "Erwartet XX:XX:XX:XX", vbInformation, "Ungültiges Format"
Else
flag = True
For i = 0 To 3
flag = flag And IsNumeric(PartsA(i)) And IsNumeric(PartsB(i))
Next
If flag Then
ah = (PartsA(0) * 360000 + PartsA(1) * 6000 + PartsA(2) * 100 + PartsA(3))
bh = (PartsB(0) * 360000 + PartsB(1) * 6000 + PartsB(2) * 100 + PartsB(3))
x = ah - bh
PartsA(0) = x \ 360000
x = x - PartsA(0) * 360000
PartsA(1) = x \ 6000
x = x - PartsA(1) * 6000
PartsA(2) = x \ 100
x = x - PartsA(2) * 100
PartsA(3) = x
flag = True
For i = 0 To 3
flag = flag And PartsA(i) = Abs(PartsA(i))
PartsA(i) = Abs(PartsA(i))
Next
diff = Join(PartsA, ":")
If Not flag Then
diff = "-" & diff
End If
Else
MsgBox "Alphanumerische Zeichen sind nicht erlaubt.", vbInformation, "Ungültiges Format"
End If
End If
End Function


Seidl ist offline   Mit Zitat antworten