Avatar billede jsc Nybegynder
12. juni 2001 - 18:07 Der er 9 kommentarer og
3 løsninger

textbox med fem tal (haster)

Hej derud\'

Jeg mangler lige et lille stykke kode der gør følgende:
et tekstfelt bliver der indtastet fem tal og når det sidste siffer er indtastet skal tekstfeltet skifte focus til tekstfelt2...

/jsc
Avatar billede hy Nybegynder
12. juni 2001 - 18:17 #1
Opret Text1 og Text2, indsæt følgende :

Private Sub Text1_Change()
If Len(Text1.Text) = 5 Then
Text2.SetFocus
End If
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
\'tjekker taster kun tal
Select Case KeyAscii
  Case vbKeyReturn \'enter = tab
  KeyAscii = 0
  SendKeys \"{tab}\"
  Case vbKeyBack \'slet tilbage
  Case 48 To 57 \'0 til 9
  Case Else
  KeyAscii = 0
  MsgBox \"Indtast kun tal\", vbCritical, \"Tænk dig om !!\"
  End Select
End Sub
Avatar billede kedde65 Praktikant
12. juni 2001 - 18:17 #2
Private Sub Text1_Change()
If Len(Text1.Text) = 5 Then
    Text2.SetFocus
    End If
End Sub

kedde
Avatar billede jsc Nybegynder
12. juni 2001 - 18:21 #3
--> kedde65 og hy

kan man også lave det sådan at jeg sletter 5 sifre og så skifter den tilbage til det forrige tekstfelt?
Avatar billede tdaugaard Nybegynder
12. juni 2001 - 18:30 #4
jsc:>

Private Sub Text1_Change()
    If Text2.Text = \"\" Then
        Text1.SetFocus
    End If
End Sub
Avatar billede kedde65 Praktikant
12. juni 2001 - 18:31 #5
ja tdaugaard, hvad nu hvis der stod 6 cifre i forvejen.
Avatar billede jsc Nybegynder
12. juni 2001 - 18:33 #6
nej sådan er det ikke helt... jeg vil gerne have når jeg nu trykker i text2 og jeg så opdager at jeg har skrevet forkert i text1, så sletter jeg den tekst jeg er igang med i text2 og når det sidste bogstav er slattet så hopper den tilbage så jeg kan slette text1.

hmm, forstået?
Avatar billede tdaugaard Nybegynder
12. juni 2001 - 18:33 #7
kedde65:> rettelse:


Private Sub Text1_Change()
    If Text2.Text = \"\" Then
        Text1.SetFocus
        Text1.SelLength = Len(Text1.Text)
    End If
End Sub
Avatar billede kedde65 Praktikant
12. juni 2001 - 18:34 #8
Private Sub Text1_Change()
If Len(Text1.Text) = 5 Then
    Text2.SetFocus
    End If
End Sub

Private Sub Text2_Change()
  If Len(Text2.Text) = 0 Then
        Text1.SetFocus
  End If
End Sub
Avatar billede jsc Nybegynder
12. juni 2001 - 18:38 #9
tak for hjælpen alle tre...
Avatar billede tdaugaard Nybegynder
12. juni 2001 - 18:42 #10
Så lidt...
Men men .. det her er jo dårligt hvis nu du har 10 felter ... så er det nemmere at bruge et control array. Lav en tekst box, kald den txtText, sæt \"Index\" til 0. Kopier boxen et par gange og indsæt flg. i din form\'s kode:

Private Sub txtText_KeyUp(Index As Integer, KeyCode As Integer, Shift As Integer)
    If Len(txtText(Index).Text) = 5 And Index < txtText.UBound Then
        txtText(Index + 1).SetFocus
    ElseIf Len(txtText(Index).Text) = 0 And Index > 0 Then
        txtText(Index - 1).SetFocus
        txtText(Index - 1).SelLength = Len(txtText(Index - 1))
    End If
End Sub

Så kører det helt fint automatisk.
Avatar billede jsc Nybegynder
12. juni 2001 - 18:45 #11
lyder godt det vil jeg prøve...
Avatar billede tdaugaard Nybegynder
12. juni 2001 - 18:47 #12
:-)
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