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

invoer bepalen

Status
Niet open voor verdere reacties.

alexanderinfo

Gebruiker
Lid geworden
24 mrt 2008
Berichten
95
Beste mensen,

Ik ben bezig met een formulier waarbij de gebruiker een personeelsnummer moet invoeren.
Het is echter belangrijk dat dit volgens een bepaald format gedaan wordt.
Dit probeer ik dus af te dwingen via gegevensvalidatie. Hier kom ik echter niet uit.

Hopelijk kan iemand mij hierbij een handje helpen.

Het nummer bestaat altijd uit de volgende invulling:

R00000000 (een letter (in 99,9% van de gevallen een R, gevolgd door 8 cijfers).

Alvast bedankt voor de moeite.
 
Code:
=EN(LINKS(A1;1)="R";LENGTE(A1)=9)
Dit is natuurlijk niet sluitend als de beginletter niet altijd een R is en ook de 8 getallen aan 1 of meer eisen moeten voldoen.
 
Top!
Misschien nog een kleine vraag.
Zou het mogelijk zijn in deze formule een hoofdletter te forceren?
 
Excel kent de functies HOOFDLETTERS en KLEINE.LETTERS (afhankelijk van je Excelversie kan dat ook HOOFDLETT en KLEINELETT zijn), maar bij gegevensvalidatie werkt die niet echt lekker. Je zou ook kunnen corrigeren via "private sub worksheet_change" .
 
Excel kent de functies HOOFDLETTERS en KLEINE.LETTERS (afhankelijk van je Excelversie kan dat ook HOOFDLETT en KLEINELETT zijn), maar bij gegevensvalidatie werkt die niet echt lekker. Je zou ook kunnen corrigeren via "private sub worksheet_change" .

Ik heb de volgende code. werkt prima als ik de range op deze wijze bepaal.

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Not Intersect(Target, Range("H3:H25")) Is Nothing Then
    Target.Value = UCase(Target.Value)
End If
End Sub

Maar zodra ik een range wil instellen op basis van een bereik binnen een tabel dan werkt het niet.

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Not Intersect(Target, Range("Tabel10[Locatiepad]")) Is Nothing Then
    Target.Value = UCase(Target.Value)
End If
End Sub
 
bedankt voor duwtje in goed richting.

heb de oplossing al gevonden met:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 Then 
    If Not Target.Text = UCase(Target.Text) Then
    'This check prevents the procedure from repeatedly calling itself (ie. recursing)
        If Target.HasFormula = True Then
            Target.Formula = "=UPPER(" & Mid(Target.Formula, 2) & ")"
            'Mid(Target.Formula, 2): eliminates "=" from the formula text
        Else
            Target = UCase(Target.Text)
        End If
    End If
End If

End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan