Hej Jag undrar hur man enklas konventerar en sträng med data till tid Vågar inte lova att denna är 100% men säkert något att bygga på: Har har du något att leka med. Byggde om en liten kod som jag hade. Lätt att bygga ut i fall du vill ha dagar, veckor eller t.o.m. år. HejTid format
iTimmar, minuter och sekunder
strängen som jag hämtar från commporten visar "123,563" sekunder
jag vill att det blir 00:02:03,563
TackSv: Tid format
<code>
Private Sub Form_Load()
x = "123,563"
x = "4420,563"
tid = Left(x, InStr(x, ",") - 1)
ms = Mid(x, InStr(x, ","))
Hours = tid / 1440
Minutes = Int(tid / 60)
seconds = tid - (60 * Minutes)
Debug.Print Right(TimeSerial(Hours, Minutes, seconds), 10) & ms
Unload Me
End Sub
</code>Sv: Tid format
<code>
strTid = "323,563"
arrTider = Array(3600, 60)
strMS = Right(strTid, Len(strTid) - InStr(strTid, ","))
lngTid = CLng(Left(strTid, InStr(strTid, ",")))
For i = 0 To 1
lngRest = lngTid Mod arrTider(i)
strResultat = strResultat & Right("0" & (lngTid - lngRest) / arrTider(i), 2) & ":"
lngTid = lngRest
Next
strResultat = strResultat & Right("0" & lngTid, 2) & "," & strMS
MsgBox strResultat
</code>
/JanneSv: Tid format
Mitt förslag till lösning
Option Explicit
Private Sub Command1_Click()
Label1.Caption = SekundConvert("123,353")
End Sub
Private Function SekundConvert(ByVal sekund As String) As String
'Max 86399 sekunder 23:59:59
Dim SekConst As Single, pos As Long
Dim helSek As String, milSek As String
SekConst = 0.999999 / 86400
If InStr(sekund, ",") Then
pos = InStr(sekund, ",")
milSek = Right$(sekund, Len(sekund) - pos + 1)
Else
sekund = sekund & ",0"
pos = InStr(sekund, ",")
milSek = ",0"
End If
helSek = Left$(sekund, pos - 1)
SekundConvert = Format$(CLng(helSek) * SekConst, _
"hh:mm:ss" & milSek)
End Function
mvh
Sven