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

Sorteren na wijziging jaartal

Status
Niet open voor verdere reacties.

robdgr

Verenigingslid
Lid geworden
8 sep 2001
Berichten
4.430
Office versie
Microsoft 365
In een kalender is de volgende macro gekoppeld aan een knop:
Code:
Sub sorteer()
'
' sorteer Macro
'

'
Application.ScreenUpdating = False
    Range("C7:e75").Select
    Selection.Sort Key1:=Range("e7"), Order1:=xlAscending, Key2:=Range("C7") _
        , Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
        xlSortNormal
    Range("C3").Select
Application.ScreenUpdating = True
End Sub
Dit werkt goed, maar ik heb gezocht naar (en niet gevonden) automatische sorteren na een wijziging in cel D4 die de naam jaar heeft.

Ik heb wel iets gevonden:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
maar heb geen flauw idee hoe ik daarmee verder kom.

Wie wel?
 
Sorteren enz

Hallo Rob,

"Private Sub Worksheet_Change(ByVal Target As Excel.Range)" is een event of gebeurtenis. De code dien je achter het betreffende werkblad te hangen. Het betekent dat indien er een "change" plaats vindt, dat dan de code moet worden uitgevoerd. Jij wilt dit beperken tot een "change" op cel D4. De code moet dan uitbreiden met een code regel:

If Intersect(Target, Range("D4")) Is Nothing Then Exit Sub

De hele code wordt dan:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Intersect(Target, Range("D4")) Is Nothing Then Exit Sub
Range("C7:e75").Select
    Selection.Sort Key1:=Range("e7"), Order1:=xlAscending, Key2:=Range("C7") _
        , Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
        xlSortNormal
    Range("C3").Select
Application.ScreenUpdating = True
End Sub

Groet

Dirk
 
Laatst bewerkt:
Dirk,

If Intersect(Target, Range("D4")) Is Nothing Then Exit Sub
Deze had ik niet, maar de overige code had ik inmiddels ook gevonden en het werkt. Ik heb hem dus aangevuld. Dank voor het meedenken.
 
Code:
If Intersect(Target, Range("D4")) Is Nothing Then Exit Sub

Rob, als het om 1 cel gaat kan je deze beter vervangen door
Code:
If Target.Address = Range("jaar").Address Then

of
Code:
If Target.Address = "$D$4" Then
 
Rudi.

Dank. Op jouw gezag neem ik dat aan. ;) Snappen doe ik geen van beide oplossingen. Feit is wel dat C3 nu wel geactiveerd wordt.
 
Sorteren

Hallo Rob,

Code:
Feit is wel dat C3 nu wel geactiveerd wordt

Als laatste coderegel staat: "Range("C3").Select" en dus.....wordt C3 geactiveerd. Deze coderegel kan er gerust uit.

De code-regel van Rudy ken ik ook maar weet het verschil niet, dus waarom het beter is horen we misschien nog van Rudy, ik ben benieuwd

Code:
Snappen doe ik geen van beide oplossingen

Beide coderegels zorgen er voor dat er alleen maar iets gebeurt (sortering in dit geval) indien in cel D4 een "change" plaats vindt. Zou deze regel er niet staan, dan zou bij elke "change" op dit werkblad een sortering plaats vinden. In jouw vraag staat dat er alleen gesorteerd moet worden als er een mutatie plaats vindt op cel D4

Groet

Dirk
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan