controleren op letters in een cijferstring

Status
Niet open voor verdere reacties.

ikselle

Gebruiker
Lid geworden
25 mei 2009
Berichten
198
Ik wil met een public function in VBA nagaan of er in een string enkel cijfers zitten of misschien ook één of meer letters.
vb:
functie("123456789") = false
functie("123s4f889e") = true
functie("24587d221") = true
Ik weet dat er een functie INSTR() bestaat maar hoe pas ik die toe om te controleren of er geen letters (hoofd- of kleine letters) in de string staan?

Waarschijnlijk is dit poepsimpel ... als je het weet.
Iemand een idee. Alvast bedankt.
 
Hou het simpel:
Code:
Expr1: IIf(IsNumeric([Testje]);"Getal";"Tekst")
 
Lukt bij mij niet; immers isnumeric("12345d67") geeft true. Moet een andere oplossing voor zijn.
 
Dat zou geen True op moeten leveren, want er zit een letter in. Met Isnumeric check je of een string een getal is of niet. En dat werkt altijd. Heb je mijn voorbeeldje in een query geprobeerd?
 
Overigens: crossposting in verschillende forums wordt, zonder bronvermelding, niet erg op prijs gesteld.... Dit is ook niet de eerste keer dat je het doet. Vermeld op zijn minst in beide forums dat je de vraag ook in een ander forum hebt gepost. Deze heb je bijvoorbeeld drie keer gepost in Officeforum.
Je moet dan niet raar opkijken als je hetzelfde antwoord krijgt.... En je laat mensen dus hun tijd verspillen met het geven van een antwoord, terwijl je het antwoord al hebt.
 
Het is juist dat ik deze vraag ook op andere fora stel vermits ik zoek naar een oplossing. Daarvoor zijn deze fora toch ; om mekaar te helpen niet? En van zodra ik een oplossing heb zet ik mijn vraag op opgelost. Wat is daar verkeerd aan?
Wat jouw oplossing betreft; ik heb ze geprobeerd in het venster direct van VBA-editor en ? isnumeric("12345d67") geeft true. Een query heb ik niet uitgeprobeerd vermits ik dit in een functie wens te gebruiken. Heb ondertussen wel een andere oplossing die ook in VBA-editor het gewenste resultaat geeft :
"12345d67" like "*[A-Z]*"
Octafish, bedankt voor je antwoord en de moeite die je je getroost hebt om mijn vraag mee op te lossen!
 
Er is niks mis met de functie, wel met de manier waarop je 'm test. Je test namelijk alleen of hij correct is of niet; niet of de uitkomst klopt. Dat doe je met (bijvoorbeeld) mijn query vergelijking, of met deze knopfunctie:
Code:
    If IsNumeric(Me.Testje) Then
        MsgBox "Dit is een getal"
    Else
        MsgBox "Dit is een tekst"
    End If
En wat betreft het dubbel posten: je mag van mij (en van iedereen vermoed ik) best in meerdere forums dezelfde vraag posten. Waar het om gaat, is dat je dat in die forums dan wel aangeeft, liefst met een link erbij naar de vraag. Want als er al een antwoord is gegeven, hoef ik dat niet meer aan te dragen. Dat scheelt mij tijd (ik hoef het niet uit te zoeken) en jou ook nog eens, want je hoeft niet naar overbodige antwoorden te kijken.
Dus een vraag op Opgelost zetten, als je bij een forum een antwoord hebt, is echt niet genoeg...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan