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

Tabvolgorde met knop

Status
Niet open voor verdere reacties.

zwinmi

Gebruiker
Lid geworden
16 feb 2010
Berichten
98
Hallo Forum,

Ook ik ben erg geholpen met onderstaande code voor tabvolgorde, maar nu zou ik graag willen dat als laatste een knop wordt geselecteerd waarna ik dus op enter kan drukken om de gegevens te verwerken. Dus tabvolgorde zoals onderstaand: cel A1, F5, B12, A6, en dan dus [knop 2] Als deze dan z'n focus heeft kan ik nog een keer op enter drukken en wordt de macro achter de knop uitgevoerd...

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static lastCellIndex As Integer
    Dim Addresses_InOrder As Variant
    If Target.Count = 1 Then
        Addresses_InOrder = Array("$A$1", "$F$5", "$B$12", "$A$6")
        lastCellIndex = lastCellIndex + 1
        If lastCellIndex > UBound(Addresses_InOrder) Then _
        lastCellIndex = LBound(Addresses_InOrder)
        If lastCellIndex < LBound(Addresses_InOrder) Then _
        lastCellIndex = LBound(Addresses_InOrder)
        Application.EnableEvents = False
        Range(Addresses_InOrder(lastCellIndex)).Select
        Application.EnableEvents = True
    End If
End Sub

Groeten Mike
 
Zwinmi,

Waarom een knop?

Je kunt de code toch gewoon door laten lopen.
 
Beste SuperZeeuw,

bedankt voor je reactie, maar ik wil graag met een knop werken. Dus eerst lekker door tabben/enteren en waar nodig waarden intypen. En dan wil ik dat onderaan de knop wordt geselecteerd om het hele zooitje weg te schrijven naar een ander tabblad.

Dus weet jij of dit mogelijk is?

Met vriendelijke groet,

Mike
 
Mike,

Mogelijk is er heel veel.

Maar er leiden meerdere wegen naar Rome en welke weg wil jij kiezen.
Stuur je dit alles aan vanuit het werkblad?
Stuur je het aan vanuit een Userform?

Of wellicht nog op een andere manier.

Als je dat eerst wil vertellen dan kan er veel gerichter een oplossingsrichting gekozen worden.
 
Ik stuur dit aan vanuit het werkblad. De code bij m'n eerste bericht staat in VB in het desbetreffende werkblad. Die code zorgt dus voor de goede tabvolgorde op dat werkblad (A1, F5, B12, A6). Nu moet er alleen nog even iets gevoegd worden dat ervoor zorgt dat na cel A6, Knop 2 wordt geselecteerd, als ik dan op enter druk gaat de macro in werking.
 
Mike,

De knop staat op je werkblad dan zul je er gewoon op moeten klikken want een SetFocus voor een button op je werkblad is er niet wel in een Userform.
 
Hoi Superzeeuw,

Dat is dan erg jammer voor mij :D

In ieder geval bedankt voor je moeite!!

Groeten Mike
 
Als je een knop gebruikt uit de Werkset Besturingselementen
Code:
ActiveSheet.CommandButton1.Activate
 
Hoi Rudi,

bedankt voor je reactie. Het is alleen geen opdrachtknop/commandbutton maar een gewone knop. Kan het dan ook? Ik heb onderstaande code achter die werkblad staan, deze zorgt voor de tabvolgorde, dus na cel E17 wil ik dat dat Knop 2 wordt geactiveerd (deze knop schrijf dan alle gegevens weg). Ik had in jou code CommandButton1 veranderd in Knop 2, maar dat werkt dus niet :p

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static lastCellIndex As Integer
    Dim Addresses_InOrder As Variant
    If Target.Count = 1 Then
        Addresses_InOrder = Array("$C$3", "$C$4", "$C$7", "$C$8", "$E$7", "$C$10", "$C$11", "$C$12", "$C$13", "$C$14", "$C$15", "$C$16", "$C$17", "$E$10", "$E$11", "$E$12", "$E$13", "$E$14", "$E$15", "$E$16", "$E$17")
        lastCellIndex = lastCellIndex + 1
        If lastCellIndex > UBound(Addresses_InOrder) Then _
        lastCellIndex = LBound(Addresses_InOrder)
        If lastCellIndex < LBound(Addresses_InOrder) Then _
        lastCellIndex = LBound(Addresses_InOrder)
        Application.EnableEvents = False
        Range(Addresses_InOrder(lastCellIndex)).Select
        Application.EnableEvents = True
    End If
End Sub

Alvast bedankt voor de moeite!

Mike
 
De knop uit Formulieren(Knop 1, Knop 2, enz ....) kent geen Activate. Je zal dus moeten wijzigen in een knop uit de Werkset Besturingselementen.
 
Oke Rudi dat heb ik gedaan en de commandbutton doet nu wat eerst de knop deed. De commandbutton moet dus als er getabt wordt na cel E17 komen maar waar moet ik dan deze code tussen zetten:
Code:
ActiveSheet.CommandButton1.Activate

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static lastCellIndex As Integer
    Dim Addresses_InOrder As Variant
    If Target.Count = 1 Then
        Addresses_InOrder = Array("$C$3", "$C$4", "$C$7", "$C$8", "$E$7", "$C$10", "$C$11", "$C$12", "$C$13", "$C$14", "$C$15", "$C$16", "$C$17", "$E$10", "$E$11", "$E$12", "$E$13", "$E$14", "$E$15", "$E$16", "$E$17")
         lastCellIndex = lastCellIndex + 1
        If lastCellIndex > UBound(Addresses_InOrder) Then _
        lastCellIndex = LBound(Addresses_InOrder)
        If lastCellIndex < LBound(Addresses_InOrder) Then _
        lastCellIndex = LBound(Addresses_InOrder)
        Application.EnableEvents = False
        Range(Addresses_InOrder(lastCellIndex)).Select
        Application.EnableEvents = True
    End If
End Sub

Groeten Mike
 
Test
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static lastCellIndex As Integer
    Dim Addresses_InOrder As Variant
    If Target.Count = 1 Then
        Addresses_InOrder = Array("$C$3", "$C$4", "$C$7", "$C$8", "$E$7", "$C$10", "$C$11", "$C$12", "$C$13", "$C$14", "$C$15", "$C$16", "$C$17", "$E$10", "$E$11", "$E$12", "$E$13", "$E$14", "$E$15", "$E$16", "$E$17")
        lastCellIndex = lastCellIndex + 1
        If lastCellIndex > UBound(Addresses_InOrder) Then
            ActiveSheet.CommandButton1.Activate
            lastCellIndex = LBound(Addresses_InOrder)
            Application.EnableEvents = True
            Exit Sub
        End If
        If lastCellIndex < LBound(Addresses_InOrder) Then _
        lastCellIndex = LBound(Addresses_InOrder)
        Application.EnableEvents = False
        Range(Addresses_InOrder(lastCellIndex)).Select
        Application.EnableEvents = True
    End If
End Sub
 
Ha Rudi,

Ik had inderdaad nog niet gereageerd (was erbij ingeschoten). Mijn excuses. Je oplossing werkt redelijk, hij krijgt de focus op het einde. Maar ik moet nog steeds met m'n muis klikken, dus als ie de focus heeft kan ik de knop nog niet activeren door nog een keer op enter te drukken. Ook als ik ff een paar cellen terug wil omdat ik een cel ben vergeten in te vullen, is het moeilijk om die cel te selecteren (Excel selecteert gelijk de bovenste cel, zodat ik opnieuw moet enteren). Ik moet dan door enteren totdat deze weer langs die cel komt. Ik heb nu deze code eraf gehaald, zodat ik ook met de pijltjes toetsten makkelijker kan bewegen. Eigenlijk wil ik dat de pijltjes toetsen nog gewoon werken (dus een pijl omhoog is een cel omhoog) als ik de code gebruik. Als ik dan nog is terug gaat, werkt dat tenminste gewoon, en als ik door enter krijg ik de gewenste volgorde.

Met vriendelijke groet,

Mike
 
Je zal dan toch een keuze moeten maken, ofwel de volgorde via de code ofwel gewoon werken met je pijltjestoetsen maar beide simultaan gebruiken gaat niet.
 
Hoi Rudi,

Dan kies ik er toch voor om gewoon met de pijltjes toetsen te werken. Dat gaat eigenlijk ook best. Bedankt voor het meedenken!

Met vriendelijke groet,

Mike
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan