Avatar billede hubertus Seniormester
12. november 2006 - 18:59 Der er 7 kommentarer og
1 løsning

input af et bestemt antal cifre i en userrform

En lille udfordring:

Jeg har følgende kode, som er en del af et foreningsark:

Private Sub Txtmedlemsnummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim MyRange As Range
Set MyRange = Worksheets("medlemsnummer").Range("A1:C1000")

If Not Val(txtmedlemsnummer.Text) = 0 Then

    On Error Resume Next
   
  If Len(txtPostnr.Text) = 4 Then
      txtBy.Text = Application.WorksheetFunction.VLookup(Val(txtMedlemsnummer.Text), MyRange, 3, False)
  Else
 
    MsgBox "Der skal være 4 cifre i medlemsnummeret"
   
    txtmedlemsnummer.SetFocus
 
  End If
     

Else
    txtmedlemsnummer.Text = ""
End If

Set MyRange = Nothing

End Sub

Der skal være 4 cifre i medlemsnummeret. Hvis der kun tastes 3 og trykkes på Tab, så skal der komme en fejlmeddelelse og cursoren skal placeres efter det sidste ciffer som er tastet. jeg får msgboxen, men cursoren stiller sig i næste textbox. Hvad gør en klog?
Avatar billede hubertus Seniormester
12. november 2006 - 19:00 #1
det skal selvfølgelig være
if Len(txtmedlemsnummer.txt)=4 then - I know.
Avatar billede kabbak Professor
12. november 2006 - 19:19 #2
MsgBox "Der skal være 4 cifre i medlemsnummeret"
          Cancel = True
Avatar billede hubertus Seniormester
12. november 2006 - 19:31 #3
Det virker fint, undre mig bare over at txtmedlemsnummer.setfocus ikke gør det samme.
Kan du give mig en ide om, hvordan jeg fanger op, hvis medlemsnummeret ikke findes?
Avatar billede kabbak Professor
12. november 2006 - 20:07 #4
Private Sub Txtmedlemsnummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim MyRange As Variant, Fundet As Boolean
    MyRange = Worksheets("medlemsnummer").Range("A1:C1000")
    Fundet = False
    If Not Val(Txtmedlemsnummer.Text) = 0 Then
        If Len(Txtmedlemsnummer.Text) = 4 Then
            For i = 1 To UBound(MyRange)
                If Val(Txtmedlemsnummer.Text) = MyRange(i, 1) Then
                    Fundet = True
                    Exit For
                End If
            Next
            If Fundet Then
                txtBy.Text = MyRange(i, 3)
            Else
                MsgBox " nummeret findes ikke"
            End If
        Else
            MsgBox "Der skal være 4 cifre i medlemsnummeret"
            Cancel = True
        End If

    Else
        Txtmedlemsnummer.Text = ""
    End If

End Sub
Avatar billede hubertus Seniormester
13. november 2006 - 16:08 #5
Vi havde et strømudfald i aftes - af 12 timers varighed øv - derfor den sene reaktion.

Med en lille ændring virker den perfekt. Den ryger fluks i mit modulbibliotek.
Kan du knytte nogle commentarer til Cancel = True. Jeg kan godt se hvad den gør, men forstår den ikke!

Lægger du et svar?
Avatar billede kabbak Professor
14. november 2006 - 08:25 #6
Dit procedure kald er denne

Private Sub Txtmedlemsnummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)

der kan du se at "Cancel As MSForms.ReturnBoolean" optræder, så når man sætter Cancel = true, betyder det at den IKKE skal Exit fra tekstboksen
Avatar billede kabbak Professor
14. november 2006 - 08:25 #7
et svar ;0))
Avatar billede hubertus Seniormester
14. november 2006 - 09:46 #8
alle tiders - tak for det :-)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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