Textbox mag alleen een postcode bevatten

Status
Niet open voor verdere reacties.

MichaelEv

Gebruiker
Lid geworden
18 mei 2018
Berichten
12
Hallo,

Ik heb in mijn userform een textbox waar een user een postcode kan invullen (voor een adresbestand).

Nu wil ik controleren d.m.v. voordat ik deze wegschrijf.

Als voorbeeld, postcode: 1234AA.

Ik kan de eerste vier cijfers makkelijk controleren:

'txtPostcode is de naam van mijn textbox
Code:
IsNumeric(left(txtPostcode.Value,4)) = True

Nu wil voor de twee rechter ** controleren of dat alleen letters zijn. Toch zie ik daar niet zo een gemakkelijkere code voor.

Iemand een idee?

PS: Dit is veruit het beste forum ooit wat ik heb gevonden. De kennis en bereidheid om te helpen die hier aanwezig is zie je nergens anders! Keep up going the good work!
 
Je kan de rechter tekens controleren op een ascii waarde. Weet zo gauw uit mijn hoofd niet welke precies, maar met de check MsgBox Asc("A") en MsgBox Asc("Z") kom je een heel eind. In je routine zet je dan de invoer ook gelijk op hoofdletter (Ucase gebruiken dus) zodat je ook niet hoeft te controleren op Asc("a"), wat uiteraard een ander teken is.
 
Wat Octafish zegt. En daar kan je een functie voor gebruiken:
Code:
Function ValidPostcode(Postcode As String) As Boolean
    If Len(Postcode = 6) Then
        If IsNumeric(Left(Postcode, 4)) Then
            letters = UCase(Right(Postcode, 2))
            Select Case Asc(Left(letters, 1))
                Case 65 To 92
                    Select Case Asc(Right(letters, 1))
                        Case 65 To 92:  ValidPostcode = True
                    End Select
            End Select
        End If
    End If
End Function
 
Laatst bewerkt:
Of wellicht:

Code:
Function F_snb(c00)
   F_snb = (Val(c00) > 999) * StrComp("A  ", Right(c00, 2), 1) * StrComp("ZZ ", Right(c00, 2), 1)=1
End Function
 
Laatst bewerkt:
@Edmoor, bedankt voor je bericht. Ik heb "dim letters as string" toegevoegd en hij werkt helemaal. (ik merk wel dat een lege * ook als isnumeric wordt berekend. Bijvoorbeeld: "271 BE". Is dit juist?

@snb, ik wou dat ik je code begreep. Zo te zien ben je een programmeur in hart en nieren. me one day :rolleyes:

*edit: tekstfout
 
Die Dim Letters As String is alleen nodig wanneer je Option Explicit gebruikt.
Daarmee wordt afgedwongen dat variabelen verplicht gedeclareerd moeten zijn.

Wat die spatie betreft zou je dit nog als eerste regel onder Sub kunnen zetten:
Postcode = Replace(Postcode, " ", "")
 
Laatst bewerkt:
Gedaan, het is er perfect uit! bedankt iedereen voor de hulp! ik kan de vraag weer afsluiten.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan