melding bij invoer leestekens

Status
Niet open voor verdere reacties.

bloemenman

Gebruiker
Lid geworden
18 jun 2012
Berichten
118
Best helpers,

ik zoek een oplossing voor het volgende,
ik heb een invul formulier gemaakt. Ik wil dat er alleen tekst wordt ingevuld in dit formulier en bvb geen punten komma's of schuine streepjes. Weet iemand hoe je de gebruiker een melding kan geven wanneer deze tekens gebruikt worden?
 
Je kunt de gebeurtenis Change gebruiken om de input af te vangen, en dan ofwel het foutieve teken gelijk wissen, ofwel een boodschap te genereren die de gebruiker moet lezen, en wegklikken en dan alsnog het teken moet wissen. Zelf gooi ik alle foute tekens gelijk weg. Moet toch gebeuren :).
 
Goedenavond OctaFish,

Bedankt voor je reactie. Ik ben bang dat ik je voorstel niet helemaal weet toe te passen ( beetje te weinig ervaring ). Kan misschien een voorbeeld geven?
 
Een voorbeeldje.... Dat lukt nog wel :). Deze code checkt of in een tekstveld alleen cijfers worden ingevoerd of niet. In het laatste geval wordt het laatst ingevoerde teken gewist.
Code:
Private Sub txtRegistratienr_naw_Change()
    If Not IsNumeric(Me.txtRegistratienr_naw.Text) And Me.txtRegistratienr_naw.Text & "" <> "" Then
        sTmp = Me.txtRegistratienr_naw.Text
        MsgBox "Het registratienummer mag alleen uit cijfers bestaan.", vbCritical, "Verkeerd registratienummer"
        If Len(sTmp) > 1 Then
            sTmp = Left(sTmp, Len(sTmp) - 1)
            Me.txtRegistratienr_naw.Text = sTmp
        Else
            Me.txtRegistratienr_naw.Text = ""
        End If
    End If
End Sub
 
Ow sorry OctaFish, ik zei invul formulier maar ik bedoelde eigenlijk een werkblad (om in te vullen ) en in jouw code begrijp ik dat je een userform bedoeld. Sorry.
Heb je misschien nog een boorbeeld voor een cel in een werkblad waarin alleen tekst mag worden gebruikt?
 
Tja, als je in het VBA forum een vraag stelt over formulieren, dan is het logisch dat je daar een antwoord op krijgt :). Je vraag had dus beter in het Excel forum kunnen staan. Maar goed. Dan kun je (denk ik) niet zo makkelijk 'live' controleren, al kun je daar nog wel een UDF voor maken (=eigen functie). Maar zonder programmeren kan het ook, met Gegevensvalidatie. Je gebruikt dan de optie <Aangepast>, en als formule typ je dan: =IsTekst(A1) waarbij hier A1 de cel is die gecontroleerd wordt. Met de opties in het tabblad Foutmelding kun je dan aangeven wat er moet/mag gebeuren. Zoals een boodschap.
 
Laatst bewerkt:
Je hebt gelijk OctaFish, sorry hiervoor. Ik ga je oplossing toepassen. Bedankt voor de hulp
 
Blijkbaar aanziet IsText() een leesteken ook als string.

Het gebruik van een macro lijkt mij onvermijdelijk. Met het Change event kan je de macro aanroepen of zelfs met Data Validation, maar daar is een workaround voor nodig. Zie bijlage.

Grtz,
MDN111.
 

Bijlagen

  • Input.xls
    23 KB · Weergaven: 23
Blijkbaar aanziet IsText() een leesteken ook als string.

Het gebruik van een macro lijkt mij onvermijdelijk. Met het Change event kan je de macro aanroepen of zelfs met Data Validation, maar daar is een workaround voor nodig. Zie bijlage.

Grtz,
MDN111.

Hallo MDN111

bedankt voor je reactie. Dit is precies wat ik bedoel. De IsTekst bij valideren laat inderdaad nog wel schuine strepen e.d. toe. Deze code is super.
Een klein vraagje nog, hoe pas ik deze code toe op cel C5? (ik heb nog wat te weinig ervaring :| )

Ik heb niet goed gekeken hoor sorry.
Ik ga ermee aan de slag :)
 
Laatst bewerkt:
Hallo MDN111

bedankt voor je reactie. Dit is precies wat ik bedoel. De IsTekst bij valideren laat inderdaad nog wel schuine strepen e.d. toe. Deze code is super.
Een klein vraagje nog, hoe pas ik deze code toe op cel C5? (ik heb nog wat te weinig ervaring :| )

Ik heb niet goed gekeken hoor sorry.
Ik ga ermee aan de slag :)

Super! Het werkt zoals ik bedoel.

Weer super bedankt MDN111!
 
De controle maakt gebruik van de InStr() functie. Voor ieder teken van de ingevoerde string wordt gevalueerd of dat teken voorkomt in het alfabet of de cijfers. Als je dus ook spaties wil toelaten hoef je alleen een spatie toe te voegen bij de "alfabet+cijfers"-string.

Wijzig de regel
Code:
If InStr("ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789", UCase(Mid(cString, i, 1))) = 0 Then
in
Code:
If InStr("ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789 ", UCase(Mid(Target, i, 1))) = 0 Then

Grtz,
MDN111.
 
De controle maakt gebruik van de InStr() functie. Voor ieder teken van de ingevoerde string wordt gevalueerd of dat teken voorkomt in het alfabet of de cijfers. Als je dus ook spaties wil toelaten hoef je alleen een spatie toe te voegen bij de "alfabet+cijfers"-string.

Wijzig de regel
Code:
If InStr("ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789", UCase(Mid(cString, i, 1))) = 0 Then
in
Code:
If InStr("ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789 ", UCase(Mid(Target, i, 1))) = 0 Then

Grtz,
MDN111.

Ha bedankt, deze werkt prima. Dit keer een simpele oplossing, maar ik kwam er zelf niet op.
Weer bedankt hoor!

Grtz Bloemenman
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan