• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Inhoud checken op aantal, cijfer, leeg, numerisch

Status
Niet open voor verdere reacties.

stefano

Gebruiker
Lid geworden
22 mei 2004
Berichten
864
In een formulier wil ik de inhoud van een textbox controleren op de inhoud.

1. Mag niet leeg zijn
2. Mag alleen cijfers bevatten
3. Het aantal cijfers moet 7 zijn
4. Het eerste cijfer moet een 2 of een 3 zijn.

kan iemand helpen?

Code:
Private Sub TextBox1_Change()

If TextBox1.Value = "" Then
Exit Sub
End If
If IsNumeric(TextBox1.Value) Then
Exit Sub
Else
MsgBox ("Je mag alleen cijers invullen!")
TextBox1.Value = ("")

End If
End Sub
 
Ik zou eerder een test doen in het Exit event.

Is dit werkbaar?

Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim bytLen As Byte
Dim booNum As Boolean

bytLen = Len(TextBox1)
booNum = IsNumeric(TextBox1)
    If bytLen <> 7 Then
        MsgBox "Het aantal karakters moet 7 zijn", vbOKOnly, "onjuiste ingave"
        TextBox1.SetFocus
        Exit Sub
    ElseIf booNum = False Then
        MsgBox "Ingave mag alleen cijfers bevatten", vbOKOnly, _
        "onjuiste ingave"
        TextBox1.SetFocus
        Exit Sub
    ElseIf Left(TextBox1, 1) <> 2 And Left(TextBox1, 1) <> 3 Then
        MsgBox "Het eerste cijfer moet een 2 of een 3 zijn", vbOKOnly, _
        "onjuiste ingave"
        TextBox1.SetFocus
        Exit Sub
    End If
End Sub
 
Laatst bewerkt:
Probeer dit eens:
Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Len(TextBox1.Text) <> 7 Then
        MsgBox "Er dienen 7 cijfers te worden ingevoerd.", vbCritical
        Cancel = True
    End If
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    With TextBox1
        If Len(.Text) < 7 Then
            If KeyAscii < 48 Or KeyAscii > 57 Then
                KeyAscii = 0
            Else
                If .SelStart = 0 Then
                    If KeyAscii <> 50 And KeyAscii <> 51 Then KeyAscii = 0
                End If
            End If
        Else
            KeyAscii = 0
        End If
    End With
End Sub

Dan wordt het tijdens het intikken al gecontroleerd.
 
Laatst bewerkt:
Gewoonweg super, beide bedankt voor de oplossingen !
 
Ook deze nog.
Code:
Private Sub textbox1_change()
Dim t As String, L As Long
t = "[2-3][0-9][0-9][0-9][0-9][0-9][0-9]"
  With TextBox1
     L = Len(.Text)
        If L > 0 And Not .Text Like Left(t, L * 5) Then
          .Text = Left(.Text, L - 1)
          MsgBox "begincijfer is een 2 of 3, en het totaal moet bestaan uit 7 cijfers"
       End If
   End With
End Sub
 
Dank je voor de oplossingen.

@Ed,

ik gebruik de code in een form. Wanneer de form geopend wordt, bv per abuis, dan kan ik die niet verlaten via een commandbutton. Telkens verschijnt het bericht 'Er dienen 7 cijfers te worden ingevoerd".

de code van de commandbuttons wissen en Annuleren staan hieronder:

Code:
Private Sub CBWis_Click()
Call Userform_Initialize
End Sub

Code:
Private Sub CBAnn_Click()
Unload Me
End Sub

kan je nog eens kijken aub ?

PS : via het 'kruisje' form sluiten kan ik mijn form wel verlaten.
 
Doe dan dit:
Code:
Dim Sluiten As Boolean

Private Sub CBAnn_Click()
    Unload Me
End Sub

Private Sub CBAnn_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Sluiten = True
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Sluiten Then Exit Sub
    If Len(TextBox1.Text) <> 7 Then
        MsgBox "Er dienen 7 cijfers te worden ingevoerd.", vbCritical
        Cancel = True
    End If
End Sub

En zet van de knop CBann de TakeFocusOnClick op False.
 
Laatst bewerkt:
Prima, werkt zoals het moet, dank je wel.

(beetje lang geduurd voor een antwoord, sorry)
 
Geen probleem en graag gedaan :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan