Avatar billede richter1 Nybegynder
16. februar 2008 - 18:39 Der er 6 kommentarer og
1 løsning

userform - kontrol af indtastning i textbox

Jeg har følgende udfordring:

I en textbox i en userform skal brugerne kunne indtaste følgende matrix:

ab 1111     
aaa 111111  (aaa er et fast navn)
bbbb 1111  (bbbb er et fast navn)

altså den første del er bogstaver, dernæst et mellemrum og derpå tal. Jeg vil gerne at keypress benyttes til at kontrollere at brugeren indtaster i ovenstående format. Jeg har 3 checkboxe, som afgør hvilken af de 3 formater der skal anvendes. ab kan være hele alfabetet, mens aaa og bbbb er to faste betegnelser.

Giver det mening?

Håber I kan hjælpe.
16. februar 2008 - 21:46 #1
Her her jeg lavet et lille eksempel, hvor jeg har har leget lidt med principperne - kan du selv komme videre herfra ??

Option Explicit

Private Const msVALTYPE_AB As String = "AB"
Private Const msVALTYPE_AAA As String = "AAA"
Private Const msVALTYPE_BBBB As String = "BBBB"

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    ValidateTextBoxUserEntering KeyAscii, msVALTYPE_AB, Me.TextBox1
End Sub

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    ValidateTextBoxUserEntering KeyAscii, msVALTYPE_AAA, Me.TextBox2

End Sub

Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    ValidateTextBoxUserEntering KeyAscii, msVALTYPE_BBBB, Me.TextBox3
End Sub


Public Sub ValidateTextBoxUserEntering( _
    ByVal KeyAscii As MSForms.ReturnInteger, _
    ByVal sValidateType As String, _
    ByVal oControl As MSForms.Control)
   
    Select Case sValidateType
        Case msVALTYPE_AB
            Select Case Len(oControl.Text)
                Case Is < 2
                    KeyPressLettersOnly KeyAscii
                Case Is = 2
                    KeyPressSpaceOnly KeyAscii
                Case Is > 2
                    KeyPressNumbersOnly KeyAscii
            End Select
       
        Case msVALTYPE_AAA
            Select Case Len(oControl.Text)
                Case Is < 3
                    KeyPressLettersOnly KeyAscii
                Case Is = 3
                    KeyPressSpaceOnly KeyAscii
                Case Is > 3
                    KeyPressNumbersOnly KeyAscii
            End Select
           
        Case msVALTYPE_BBBB
            Select Case Len(oControl.Text)
                Case Is < 4
                    KeyPressLettersOnly KeyAscii
                Case Is = 4
                    KeyPressSpaceOnly KeyAscii
                Case Is > 4
                    KeyPressNumbersOnly KeyAscii
            End Select
           
    End Select
End Sub

Public Sub KeyPressNumbersOnly(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case vbKey0 To vbKey9, vbKeyBack
        Case Else
            Beep
            KeyAscii = 0
    End Select
End Sub

Public Sub KeyPressLettersOnly(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case UCase(Chr(KeyAscii))
        Case "A", "B", "C", "D", "E", "F", "G", "H", "I", _
            "J", "K", "L", "M", "N", "O", "P", "Q", "R", _
            "S", "T", "U", "V", "W", "Y", "X", "Z", vbKeyBack
        Case Else
            Beep
            KeyAscii = 0
    End Select
End Sub

Public Sub KeyPressSpaceOnly(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case vbKeySpace, vbKeyBack
        Case Else
            Beep
            KeyAscii = 0
    End Select
End Sub
Avatar billede richter1 Nybegynder
17. februar 2008 - 11:25 #2
Hej Flemming
Der er ikke tale om 3 textboxe, men kun om én, som skal kunne rumme de tre typer indtastninger. Det er checkboxene, der afgør hvilken af de tre typer det skal være.
De to typer er faste navne AAA og BBBB. Den tredje type kan være alle kombinationer af bogstaver -ligesom en nummerplade.
Håber du har mod på at arbejde videre med den.
17. februar 2008 - 13:22 #3
Hejsa - jep, jeg har fanget dit ønske, men min tid håbede at du selv kunne komme videre derfra.
Checkboxe eller optionbuttons... der kan typisk foretages flere valg, når det er checkboxe og kun et valg når der er optionbuttons, hvorfor jeg nok ville bruge dem istedet.
Download en demo for spørgsmål 819811 her http://www.smartoffice.dk/Tips/Eksperten/Index.asp
Avatar billede richter1 Nybegynder
18. februar 2008 - 09:27 #4
Hej Flemming
Jeg har prøvet din kode, men kan ikke få den til at virker.
Når jeg vælger ab, kan jeg taste 2 bogstaver og ikke mere
når jeg vælger AAA og BBBB kan jeg kun indtaste tal?
Hvad går der galt?
18. februar 2008 - 17:01 #5
Det går ikke noget galt, det virker efter mit design.

Når du vælger:
AB - kan du taste 2 bogstaver, så et mellemrum og derefter flere tal
AAA - så skrives AAA foran textboksen og du kan kun skrive tal
BBBB - så skrives BBBB foran textboksen og du kan kun skrive tal

Grunden til at jeg har gjort det med AAA og BBBB er, at du skriver det et fast format, og med et fast format forstår jeg noget, som brugeren ikke kan ændre/ikke behøves at indtaste, hvorfor det er vist i en label.
Når du trykker OK vil det blive sat sammen med de tal du har indtastet.
Avatar billede richter1 Nybegynder
20. februar 2008 - 10:30 #6
Hej Flemming -
Jeg har fået løst mit problem med inspiration fra din kode. Lægger du et nyt svar, så vil jeg fluks lukke?
Tak for hjælpen :O)
20. februar 2008 - 16:47 #7
Det er den bedste slags løsninger :-)
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