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

Volgorde tab-toets

Status
Niet open voor verdere reacties.

erbeeee

Gebruiker
Lid geworden
8 mei 2007
Berichten
42
Ik heb een werkblad beveiligd op enkele cellen na. Als ik op de Tab-toets druk, dan ga ik in deze volgorde door het blad: B6, D6, B7, D7, B8, D8 etc. Nu wil ik eigenlijk dat ik met tab de volgende volgorde aanhouden:

eerst van B6:B21
dan D6 : D21
dan B25 : B30
dan D25 : D29

en dan mag hij gewoon weer in rijen tab-en...
 
Laatst bewerkt:
Standaard is dit niet mogelijk.

Wel met VBA, een zogenaamde SelectionChange gebeurtenis. Je kan code schrijven die Excel uitvoert telkens als de cursor in een andere cel staat.

Een creatieve niet-VBA oplossing is om de cellen in de juiste volgorde te selecteren (met Ctrl toets), dat bereik een naam te geven, en dan met Enters door het bereik gaan en de cellen invullen.

Wigi
 
Hier al wat meer uitgewerkte code:

Misschien is dit artikel van nut?

Je kan het Worksheet_Change event nog veranderen in een Worksheet_SelectionChange event. Lees ook de commentaren op het artikel, bevatten nuttige dingen.

Wigi
 
Hoi Wigi,

Bedankt voor je tip. Ik heb hem bestudeerd en ben ermee aan de slag gegaan. Het werkt alleen nog niet echt... :( Ik heb hem in ThisWorkbook geplaatst en later, toen bleek dat dit niet werkte, ook in het betreffende werkblad en in module 1. Hij doet het echter nog niet....

Dit is wat ik heb:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

    Dim aTabOrder As Variant
    Dim i As Long
    
    'Set the tab order of input cells
    aTabOrder = Array("B6", "B7", "B8", "B9", "B10", "B11", "B12", "B13", "B14", "B15", "B16", "B17", "B18", "B19", "B20", "B21", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "D13", "D14", "D15", "D16", "D17", "D18", "D19", "D20", "D21", "B24", "B25", "B27", "B28", "B29", "D24", "D25", "D26", "D28", "D29", "A35", "B35", "C35", "D35")
    
    'Loop through the array of cell address
    For i = LBound(aTabOrder) To UBound(aTabOrder)
        'If the changed cell is in the array
        If aTabOrder(i) = Target.Address(0, 0) Then
            'If the changed cell is the last array element
            If i = UBound(aTabOrder) Then
                'Select the first cell in the array
                Me.Range(aTabOrder(LBound(aTabOrder))).Select
            Else
                'Select the next cell in the array
                Me.Range(aTabOrder(i + 1)).Select
            End If
        End If
    Next i
    
End Sub

Volgens mij moeten die cellen korter kunnen (B6:B21??)
 
Je moet hem in de code zetten van het blad waar het van toepassing moet zijn.

Ook kan je beter een SelectionChange event gebruiken, geen Change event.

Blokkeer ook de cellen die niet bereikt mogen worden.

Of het dan korter kan zien we daarna wel, als dit werkt.
 
Hoi,

Er gebeurd nu in ieder geval wel wat. Het is alleen nog niet wat ik wil... Mijn code is nu:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim aTabOrder As Variant
    Dim i As Long
    
    'Set the tab order of input cells
    aTabOrder = Array("B6", "B7", "B8", "B9", "B10", "B11", "B12", "B13", "B14", "B15", "B16", "B17", "B18", "B19", "B20", "B21", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "D13", "D14", "D15", "D16", "D17", "D18", "D19", "D20", "D21", "B24", "B25", "B27", "B28", "B29", "D24", "D25", "D26", "D28", "D29", "A35", "B35", "C35", "D35")
        
    'Loop through the array of cell address
    For i = LBound(aTabOrder) To UBound(aTabOrder)
        'If the changed cell is in the array
        If aTabOrder(i) = Target.Address(0, 0) Then
            'If the changed cell is the last array element
            If i = UBound(aTabOrder) Then
                'Select the first cell in the array
                Me.Range(aTabOrder(LBound(aTabOrder))).Select
            Else
                'Select the next cell in the array
                Me.Range(aTabOrder(i + 1)).Select
            End If
        End If
    Next i
    
End Sub

Als ik nu op een cel klik, dan selecteert hij een stuk of vier cellen achter elkaar en dan eindigt hij op een andere cel. als ik bijvoorbeeld B6 aanklik, dan selecteert hij uiteindelijk D17, bij B7 komt hij op D18 uit, bij B8 op D19 etc. er zit dus wel een logica in. Hij selecteert steeds de cel die 27 posities verderop in de lijst staat.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan