Avatar billede JZA Nybegynder
21. januar 2013 - 13:15 Der er 1 løsning

TextBox_Exit træk på CheckValue funktion

Hej Eksperter
Hvad skal jeg gøre for at få nedenstående funktion til at virke ved Exit på flere tekstbokse?
Det virker fint hvis koden er skrevet direkte under eks. TextBox1_Exit og "Me.Controls(TbNavn)" er erstattet med "TextBox1"
Som koden er nedenfor, så er det som om den stopper når den kommer til en with sætning, men jeg kan ikke få den til at melde fejl. "SelLength = Len(.Text)" i with sætningen virker også problematisk.

Håber at der er nogen der kan hjælpe.

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    CheckValue
End Sub
'--------------
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    CheckValue
End Sub
'-----------------
Private Function CheckValue()
If Me.Controls(TbNavn) = "" Or Len(Me.Controls(TbNavn)) = 1 Or Len(Me.Controls(TbNavn)) = 2 Or Len(Me.Controls(TbNavn)) = 3 Or Len(Me.Controls(TbNavn)) > 5 Then
    Cancel = True
    With Me.Controls(TbNavn)
        MsgBox "Please enter a time value [hhmm] or [hh:mm]!"
        .SetFocus
        .SelStart = 0
        .SelLength = Len(.Text)
    End With
ElseIf Left(Me.Controls(TbNavn), 2) > 23 Then
    If InStr(TextBox1.Text, ":") Then
        Me.Controls(TbNavn).Text = Format(Me.Controls(TbNavn).Text, "hh:mm")
    Else
        Me.Controls(TbNavn).Text = Format(Me.Controls(TbNavn).Text, "00:00")
    End If
    Cancel = True
    With Me.Controls(TbNavn)
        MsgBox "Please enter a time value [hh] between 0 and 23!"
        .SetFocus
        .SelStart = 0
        .SelLength = Len(.Text)
    End With
ElseIf Len(Me.Controls(TbNavn)) = 4 Then
    If InStr(Me.Controls(TbNavn).Text, ":") Then
        Cancel = True
        With Me.Controls(TbNavn)
            MsgBox "Please enter a time value [hhmm] or [hh:mm]!"
            .SetFocus
            .SelStart = 0
            .SelLength = Len(.Text)
        End With
    ElseIf Right(Me.Controls(TbNavn), 2) > 59 Then
        Cancel = True
        With Me.Controls(TbNavn)
            MsgBox "Please enter a time value [mm] between 0 and 59!"
            .SetFocus
            .SelStart = 0
            .SelLength = Len(.Text)
        End With
    Else
        Me.Controls(TbNavn).Text = Format(Me.Controls(TbNavn).Text, "00:00")
    End If
ElseIf Len(Me.Controls(TbNavn)) = 5 Then
    If InStr(Me.Controls(TbNavn).Text, ":") Then
        If Right(Me.Controls(TbNavn), 2) > 59 Then
        Cancel = True
        With Me.Controls(TbNavn)
            MsgBox "Please enter a time value [mm] between 0 and 59!"
            .SetFocus
            .SelStart = 0
            .SelLength = Len(.Text)
        End With
        End If
    Else
    Cancel = True
    With Me.Controls(TbNavn)
        MsgBox "Please enter a time value [hhmm] or [hh:mm]!"
        .SetFocus
        .SelStart = 0
        .SelLength = Len(.Text)
    End With
    End If
End If
End Function
Avatar billede JZA Nybegynder
24. januar 2013 - 16:26 #1
Ingen svar modtaget.
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
Kategori
Kurser inden for grundlæggende programmering

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