UCase samen met gegevensvalidatie

Status
Niet open voor verdere reacties.

willema

Gebruiker
Lid geworden
26 aug 2005
Berichten
320
Onderstaande code wordt gestart na Worksheet_Change en zet de ingevoerde waarde in een cel van E3:E76 om in hoofdletters.
Dat werkt prima, behalve wanneer ik in die cellen gegevensvalidatie zet. Lijst met mogelijke waarden zijn D1, D2, D3, D4, D5, D6, D7, D8, D9, N1, N2, N3, N4, N5, N6, N7, N8 en N9.
Nu wou ik met die code ook invoer zonder hoofdletters (d1, d2, ..., n9) mogelijk maken. Alleen wordt eerst de validatie gecontroleerd en gestopt bij een foute invoer, vooraleer Worksheet_Change wordt uitgevoerd.
Is dit te verhelpen zonder de lijst uit te bereiden met de kleine-letters-invoer en zonder de stoppen bij fout op te geven?


Code:
Sub ChkValDNBasis(ByVal Target As Excel.Range)
'zet waarden om in hoofdletters in kolom E (D/N)
       
    'bepalen of target valabel is
    If Not Target.Column = 5 Then
        Exit Sub
    End If
    
    If Target.Row < 3 Or Target.Row > 76 Then
        Exit Sub
    End If
    
    If Target.Cells.Count > 1 Then
        Exit Sub
    End If

    If Target.Value = "" Then
        Exit Sub
    End If

    Application.EnableEvents = False
    Target.Value = UCase(Target.Value)
    Application.EnableEvents = True
    
End Sub
 
Maak gebruik van 'enableevents'.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 Application.EnableEvents = False
  Target = UCase(Target)
 Application.EnableEvents = True
End Sub
 
Dag Harry,

ik maak al gebruik van EnableEvents (zie code) maar dat heeft blijkbaar alleen invloed op andere VBA, niet op de ingebouwde foutcontrole van gegevensvalidatie.
 
Volgens mij kijk gegevensvalidatie niet naar hoofd- en kleine letters. Misschien kan je even een voorbeeldje uploaden waardoor jouw vraag iets duidelijker wordt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan