Alleen getallen in txtbox op userform

Status
Niet open voor verdere reacties.

Doohan

Gebruiker
Lid geworden
20 mrt 2012
Berichten
374
Beste helper,

Ik gebruik volgende code om een enkele textbox op een userform alleen de mogelijkheid te geven om getallen in te voeren.
Code:
Private Sub txtbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii > Asc("9") Or KeyAscii < Asc("0") Then
        If KeyAscii = Asc("-") Then
            If InStr(1, Me.txtbox1, "-") > 0 Or _
               Me.txtbox1.SelStart > 0 Then KeyAscii = 0
        ElseIf KeyAscii = Asc(".") Then
            If InStr(1, Me.txtbox1.Text, ".") > 0 Then KeyAscii = 0
        ElseIf KeyAscii = Asc(",") Then
            If InStr(1, Me.txtbox1.Text, ",") > 0 Then KeyAscii = 0
        Else
            KeyAscii = 0
        End If
    End If
End Sub

De vraag is als ik nu 20 txtboxen zo zou willen behandelen dus. txtbox1, txtbox2, txtbox3...txtbox20. hoe zou ik dit nu in een for next loop kunnen krijgen.

Alvast vriendelijk dank voor het antwoord.
 
Je kunt er een functie van maken, die je per tekstvak aanroept.

Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    funKeyPress KeyAscii, "TextBox1"
End Sub
Code:
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    funKeyPress KeyAscii, "TextBox2"
End Sub
Code:
Private Function funKeyPress(ByVal KeyAscii As MSForms.ReturnInteger, textbox As String)
    If KeyAscii > asc("9") Or KeyAscii < asc("0") Then
        If KeyAscii = asc("-") Then
            If InStr(1, Me("txtbox").Text, "-") > 0 Or _
               Me("txtbox").SelStart > 0 Then KeyAscii = 0
        ElseIf KeyAscii = asc(".") Then
            If InStr(1, Me("txtbox").Text, ".") > 0 Then KeyAscii = 0
        ElseIf KeyAscii = asc(",") Then
            If InStr(1, Me("txtbox").Text, ",") > 0 Then KeyAscii = 0
        Else
            KeyAscii = 0
        End If
    End If
End Function
 
Of alle TextBoxen in een collectie stoppen en middels WithEvents het Keypress event afvangen
 
Dank octafish,

Jouw manier werkt echter niet
Even kijken hoe ik dat van E v R kan toepassen.
 
@E v R.
Dank voor de denk richting. Ik weet echter even niet hoe dit aan te vliegen. Ik maak voor nu maar even 20x dezelfde routine en stop met dit onderzoek.
Ieder geval bedankt.
 
Ik heb mijn werkwijze (uiteraard) getest, en die werkt prima. Doe er anders een bestandje bij, want als het bij mij werkt, moet het bij jou uiteraard ook kunnen werken.
 
Waarom niet een combobox (style 2) met alle geldige getallen ?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan