• 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.

VBA: Alleen cijfers in textboxen toestaan

Status
Niet open voor verdere reacties.

gbvdh

Gebruiker
Lid geworden
14 feb 2007
Berichten
111
Goedendag,

Ik heb op m'n userform nogal wat tekstboxen staan waar alleen cijfers mogen worden ingevoerd, ik heb dat nu opgelost door bij elke textbox bij KeyPress het volgende te plaatsen
Code:
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
        Msg = "Alleen cijfers toegestaan"
If KeyAscii < 48 Or KeyAscii > 57 Then MsgBox Msg, , "Niet numerieke invoer"
Maar dat staat niet echt netjes, daarom mijn vraag: bestaat er misschien een optie om de invoermogelijkheden van de betreffende textboxen in 1 keer te limiteren? Ik dacht zelf dat hiermee wel zou lukken
Code:
Dim cCont As Control

    For Each cCont In Me.Controls
        If TypeName(cCont) = "TextBox" Then
            If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
            Msg = "Alleen cijfers toegestaan"
            If KeyAscii < 48 Or KeyAscii > 57 Then MsgBox Msg, , "Niet numerieke invoer"
        End If
     Next cCont
Maar dan kom ik meteen bij mijn 2e vraag, ik weet niet zo goed waar ik deze code neer zou moeten zetten, ik heb het geprobeerd bij UserForm_KeyPress, maar dat werkt niet.

Ik hoop dat zo een beetje duidelijk is wat ik bedoel, zo niet hoor ik dat graag.

Alvast bedankt,

Barry
 
Dag Barry,

Via Keypress is prima:

if not chr(keyascii) like "#" then keyascii=0

If Instr("0123456789,",chr(keyascii))=0 then keyascii =0
Er kan naast de cijfers ook een komma worden ingetypt.

Telkens het bericht Alleen cijfers vind ik onrustig, beter achter de textbox een label "Alleen cijfers" of iets dergelijks.

Gegroet,

Axel.
 
Hallo,

Ik zou niet met KeyAscii werken, maar het veel simpeler aanpassen.

In bijgevoegd bestand zit een formulier dat automatisch opstart bij het openen van het bestand.
Op het formulier staan 2 tekstboxen, waarin je uitsluitend een getal in kan voeren.

De tekstboxen verwijzen naar een macro in het bestand.
Hierdoor hoef je uitsluitend de macro aan te passen ipv elk tekstbox afzonderlijk.

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
Dag GB,

Roncancio heeft gelijk, dit is mooier. Maar in zijn voorbeeld staat een public sub tekst die steeds wordt aangeroepen, maar deze sub kun je ook private zetten in de code van de userform en ook even de code aanpassen anders krijg je een foutmelding bij de eerste toetsaanslag die geen cijfer is:

Private Sub TextBox1_Change()
Tekst
End Sub

Private Sub TextBox2_Change()
Tekst
End Sub

Private Sub Tekst()
If Not IsNumeric(ActiveControl) Then If Len(ActiveControl) Then ActiveControl = Left(ActiveControl, Len(ActiveControl) - 1)
End Sub
 
Dat ziet er inderdaad een stuk overzichtelijker uit, bedankt daarvoor. Maar betekend wel nog steeds dat ik bij elk textbox "Tekst" moet plaatsen (toch?). Is er misschien een manier om dit op een algemenere positie te plaatsen zodat al de textboxen in 1 keer gelimiteerd worden?
 
Als het heel moeilijk is sla ik het google-en denk ik ook maar even over, zo'n pro ben ik nou ook weer niet, en het werkt nu tenslotte ook prima. Bedankt voor de hulp
 
Laatst bewerkt:
Ik doe vanavond een poging om er code voor te schrijven. Er is denk ik wel vraag naar zoiets, dus ik ga een poging wagen ;)
 
Het is gelukt ;)

Heb code van John Walkenbach uit één van zijn boeken aangepast.

Zie bijlage en pas zelf aan.

Wigi
 

Bijlagen

Backspace

Goede oplossing, maar de backspace werkt niet. Daarvoor moet je de code
Code:
If KeyAscii <> 8 then
en dan die andere code.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan