Jag skulle vilja kolla hur många timmar som passerat, eller snarare hur många timmar som är påbörjade från min angivna start tid. Kan man inte fixa det med matte? Tack för svaret, jo jag löste det med 'lite kod' osv, men jag hade hoppats på att det funnits ngn enklare funktion. Ett alternativ. Det går alldeles utmärkt att använda DateDiff. Dim TidKolla antal timmar som passerat?
Ex:
Start 23:18
Nu 02:47
Finns det någon funktion som kan tala om för mig att jag är inne på den 4'e timman.
//UJSv: Kolla antal timmar som passerat?
Du får fixa till en funktion som räknar åt dig, om du tänker logiskt så kommer du nog fram till det.. Men jag får prova lite när jag kommer hem ikväll (2000-10-24), så kanske jag kommer fram till lite kod.Sv: Kolla antal timmar som passerat?
Här är koden, hittar Du någon enklare så vore jag tacksam!
'-Check if the start time was yesterday
If lngStartTime > lngNowTime Then
'-The Shiftstart was the day before today
objRS.Close
bytYesterday = Weekday((Weekday(Now, vbMonday)) - 1)
objRS.Open "SELECT * FROM TimeTable WHERE Weekday='" & bytYesterday & "'"
lngStartTime = ConvertTime(objRS!StartTime) '-Get yesterdays start time on the shift
bytShiftOffset = (24 - CheckHours(lngStartTime)) + CheckHours(lngNowTime)
If CheckMinutes(lngStartTime) < CheckMinutes(lngNowTime) Then
bytShiftOffset = bytShiftOffset + OneExtraHour
End If
Else '-Same day
bytShiftOffset = CheckHours(lngNowTime) - CheckHours(lngStartTime)
If CheckMinutes(lngStartTime) < CheckMinutes(lngNowTime) Then
bytShiftOffset = bytShiftOffset + OneExtraHour
End If
End If
ShiftOffset = bytShiftOffset
Else
'-There is no value before in the database
ShiftOffset = 0
End If
objRS.Close
End Function
Private Function CheckMinutes(ByVal TimeToCheck As Long) As Integer
CheckMinutes = Mid(TimeToCheck, 3, 2)
End Function
Private Function CheckHours(ByVal TimeToCheck As Long) As Integer
CheckHours = Mid(TimeToCheck, 1, 2)
End Function
Private Function ConvertTime(ByVal cTime As Variant) As Long
cTime = Split(cTime, ":")
ConvertTime = CLng(cTime(0) & cTime(1) & cTime(2))
End Function
//UJSv: Kolla antal timmar som passerat?
Dim strNu As String, strAngivenTid, iDiff As Integer
strAngivenTid = InputBox("Ange tid i formatet hh:mm", "Ange tid")
strNu = Format(Now, "Short Time")
iDiff = (Val(Left(strNu, 2)) * 60 + Right(strNu, 2)) - (Val(Left(strAngivenTid, 2)) * 60 + Right(strAngivenTid, 2))
iDiff = iDiff \ 60
MsgBox iDiffSv: Kolla antal timmar som passerat?
En eventuell nackdel är att man (så vitt jag vet) måste skriva in (fylla variabel med) ett fullständigt datum.
Jag skrev det första sättet jag kom på... Jag skrev dessutom grovt fel, dels tog jag inte hänsyn till tid efter kl 24:00 och dels ville UJ ha antalet påbörjade timmar. Båda sakerna är relativt enkla att åtgärda dock. Jag hoppas att jag inte förorsakat någon för mycket huvudbry (eller nåt). Enda ursäkten jag har är att jag var trött när jag skrev det... Ovanligt va?Sv: Kolla antal timmar som passerat?
Tid = Time
MsgBox Format(TimeSerial(0, DateDiff("s", Tid, Time) /60,0), "hh:mm")