Avatar billede prefalch Praktikant
18. oktober 2015 - 17:01 Der er 3 kommentarer og
1 løsning

Kan ikke beregne tid

Jeg er i gang med at lave et flextids regnskab hvor jeg har en:
gå hjem tid i celle c5 f.eks    15:15
mødetid i celle c6 f.eks.        6:45
i C7 en udregning i c7=c5-c6      8:30
Frokost                          0:30
en udregning i c9= c7-c8          8:00
en Konstant i c10                7:24

Og so kommer problemet i den næste udregning hvor jeg vil udregne flextiden som =c9-c10

Her får jeg resultatet  00:00 og ikke 0:26

Cellerne er formateret som tid med formatet 13:30.
Indtastningen foregår ved at indtaste tiden uden : og så er der en bagved liggende vba kode der indsætter :.
eks. Jeg indtaster 1515 og resustatet bliver 15:15

Vba koden er denne som jeg fik hjælp til af erikjuul (se tidl. tråd: http://www.eksperten.dk/spm/1006630#reply_8197750)

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim strTime As String
    With Target
        If .Cells.Count = 1 Then
            If IsNumeric(.Value) Then
                On Error GoTo ErrorOut
                Application.EnableEvents = False
                strTime = Format(Val(.Value), "0000")
                strTime = Left(strTime, Len(strTime) - 2) & ":" & Right(strTime, 2)
                If IsDate(strTime) Then
                    .Value = TimeValue(strTime)
                End If
            End If
        End If
    End With
ErrorOut:
    Application.EnableEvents = True
End Sub

Hvad er det der går galt, når de første beregninger er ok og så pludselig vil den ikke beregne
Avatar billede prefalch Praktikant
18. oktober 2015 - 17:02 #1
Ps: tidsformatet er sat til 1904
Avatar billede prefalch Praktikant
23. oktober 2015 - 18:01 #2
ingen forslag
Avatar billede prefalch Praktikant
27. oktober 2015 - 14:08 #3
ok lukker
Avatar billede jens48 Ekspert
02. november 2015 - 23:29 #4
Du skulle nok også checke om det var en formel der blev indtastet. F.eks med denne rettelse:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim StrTime As String
With Target
On Error GoTo ErrorOut
    If .Cells.Count = 1 Then
        If IsNumeric(.Value) Then
            If HasFormula Then
              On Error GoTo ErrorOut
              Application.EnableEvents = False
              StrTime = Format(Val(.Value), "0000")
              StrTime = Left(StrTime, Len(StrTime) - 2) & ":" & Right(StrTime, 2)
              If IsDate(StrTime) Then
                .Value = TimeValue(StrTime)
              End If
            End If
        End If
    End If
End With
ErrorOut:
Application.EnableEvents = True
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester