Geen min en plus tekens of andere karakters dan getallen toelaten in Textbox

Status
Niet open voor verdere reacties.

qelvin

Gebruiker
Lid geworden
15 apr 2012
Berichten
28
Beste forumleden,

Ik heb op het forum reeds enkele oplossingen gevonden voor mijn probleem, echter niet volledig waterdicht...
In een userform heb ik een textbox geplaatst waarin enkel getallen mogen ingevuld worden. Wordt er echter een + of - teken ingevoerd dan aanvaard de textbox dit, wat uiteraard niet mag.
Kan onderstaande code hieraan aangepast worden? Deze aanvaardt op dit moment alle tekens...


Code:
Private Sub KnopOKKlantID_Click()
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Klanten")

'plaatst de gegevens in de database'
If Me.TextBoxInitKlantID.Value = "" Then
    Exit Sub
End If
If Not IsNumeric(Me.TextBoxInitKlantID.Value) Then
MsgBox "Enkel getallen toegelaten (geen letters, tekens,...)"
Me.TextBoxInitKlantID.Value = ""
Exit Sub
Else
Range("InitieelKlantnummer") = Me.TextBoxInitKlantID
End If
Unload Me
'Messagebox'
MsgBox "De instellingen werden opgeslagen"
End Sub

Alvast bedankt...
 
Ik zou de input 'live' afvangen, dan ben je de ellende voor.

Code:
Private Sub TextBoxInitKlantID_Change()
Dim sTmp As Variant
    
    If TextBoxInitKlantID.Text & "" <> "" Then
        sTmp = TextBoxInitKlantID.Text
        If Asc(Right(sTmp, 1)) < 48 Or Asc(Right(sTmp, 1)) > 57 Then
            MsgBox "De reeks moet uit cijfers bestaan.", vbInformation, "Verkeerde waarde"
            TextBoxInitKlantID.Text = Left(sTmp, Len(sTmp) - 1)
        End If
    Else
        TextBoxInitKlantID.Text = ""
    End If

End Sub
 
je kan ook de ascii waarde van het karakter ophalen en dan kijken of dit licht tussen de grens van a tot z en A tot Z
 
Waarom gebruik je geen combobox met alle mogelijke geldige waarden ?
Je kunt ook aan een 'spinner' control denken.
 
Als het een klantcode van 6 cijfers is, ben je stevig aan het scrollen :)
 
De oplossing van OctaFish werkt perfect !!!
Thanks :thumb:
 
Code:
Private Sub TextBoxInitKlantID_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case Is <= 47: KeyAscii = 0
        Case 48 To 57: 'numbers 0 to 9
        Case 58 To 122: KeyAscii = 0
        Case Else: KeyAscii = 0
    End Select
End Sub
 
@Octafish

Niet met een combobox, style dropdownlist
 
@ warme bakkertje

Keurig, zonder messagebox, dus veel gebruiksvriendelijker.
 
@WB

!! :)

in dit geval te beperken tot:
Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Val(Chr(KeyAscii)) = 0 And KeyAscii <> 48 Then KeyAscii = 0
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan