Delen via

Met vba tijd omzetten lukt niet bij 18:00

Anoniem
2010-06-27T09:25:24+00:00

Ik gebruik VBA code om getallen zonder dubbele punt om te zetten in een tijdsaanduiding. Voorbeeld: 1230 wordt 12:30 Dit om veelvuldige invoer te vereenvoudigen.

Nu gaat dat prima, alleen op een enkele computer lukt dit niet met de weergave van 1800 Alleen die tijd wordt niet weergegeven als 18:00. Op andere computers met ook Office 2003 lukt dit wel.

Wat is er zo bijzonder aan de tijd van 18:00 dat het alleen daar niet werkt?

Alvast bedankt voor het meedenken.

Code:

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next

Dim Tijd As String

If Application.Intersect(Target, Range("b9:is739")) Is Nothing Then

    Exit Sub

End If

If Target.Cells.Count > 1 Then

    Exit Sub

End If

If Target.Value = "" Then

    Exit Sub

End If

If Target.Count = 1 And IsNumeric(Target) Then

With Target

    Select Case Len(.Value)

        Case 3

        If Right(.Value, 2) > 59 Then

        MsgBox ("Een uur heeft maar 60 minuten")

        Target.Value = ""

        Target.Activate

        Exit Sub

        Else

        Tijd = Left(.Value, 1) & ":" & Right(.Value, 2)

       End If

        Case 4

        If Left(.Value, 2) > 23 Then

       MsgBox ("Een dag heeft maar 24 uur")

      Target.Value = ""

      Target.Activate

        Exit Sub

        Else

        If Right(.Value, 2) > 59 Then

        MsgBox ("Een uur heeft maar 60 minuten")

        Target.Value = ""

       Target.Activate

        Exit Sub

        Else

        Tijd = Left(.Value, 2) & ":" & Right(.Value, 2)

       End If

       End If

    End Select

Application.EnableEvents = False

    .Value = TimeValue(Tijd)

    Application.EnableEvents = True

End With

 Else

    Exit Sub

    End If

End Sub

Microsoft 365 en Office | Excel | Voor thuisgebruik | Windows

Vergrendelde vraag. Deze vraag is gemigreerd vanuit de Microsoft Ondersteuning-community. U kunt met een stem aangeven of de inhoud nuttig is, maar u kunt geen opmerkingen of antwoorden toevoegen of de vraag volgen.

0 opmerkingen Geen opmerkingen

2 antwoorden

Sorteren op: Meest nuttig
  1. Anoniem
    2012-05-22T20:11:50+00:00

    Probeer het zo eens, met timeserial:

    Private Sub Worksheet_Change(ByVal Target As Range)

        Dim uur As String, minuut As String

        If Application.Intersect(Target, Range("b9:is739")) Is Nothing Or Target.Cells.Count > 1 Or Target.Value = "" And IsNumeric(Target.Value) Then Exit Sub

        With Target

            Select Case Len(.Value)

                Case 3 To 4

                    If Right(.Value, 2) > 59 Then MsgBox ("Een uur heeft maar 60 minuten"): GoTo fout

                    If Left(.Value, IIf(Len(.Value) = 4, 2, 1)) > 23 Then MsgBox ("Een dag heeft maar 24 uur"): GoTo fout

                    uur = Left(.Value, IIf(Len(.Value) = 4, 2, 1)): minuut = Right(.Value, 2)

                Case Else

                    MsgBox ("Vul een getal met 3 of 4 posities in"): GoTo fout

            End Select

            Application.EnableEvents = False

            .Value = TimeSerial(Int(uur), Int(minuut), 0)

            Application.EnableEvents = True

        End With

        Exit Sub

    fout:

        Application.EnableEvents = False

        Target.Value = ""

        Target.Activate

        Application.EnableEvents = True

    End Sub

    oops even de "vraag" datum gemist.. ;-)

    0 opmerkingen Geen opmerkingen
  2. Anoniem
    2010-06-30T07:49:43+00:00

    Heb je de taalinstellingen nagekeken op de computers waar het niet werkt ? Ga naar het configuratiescherm, dan naar "Landinstellingen". Kijk wat er bij het eerste tabje staat geselecteerd.


    Met vriendelijke groet,

    Dominique D.

    Microsoft Partner

    0 opmerkingen Geen opmerkingen