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

Sorteercode inkorten

Status
Niet open voor verdere reacties.

ExcelAmateur

Terugkerende gebruiker
Lid geworden
25 aug 2010
Berichten
3.333
Beste helpers,

Ik gebruik onderstaande sorteercode deze werkt goed maar ik vraag mij af of dit korter kan.
De code heb ik opgenomen en weet dat er meer geschreven wordt dan nodig is maar wat kan eruit.
Code:
Sub Sorteren()
  Lgc = Blad1.Range("AK5").End(xlDown).Row 'Laatste regel nummer
Application.ScreenUpdating = False
    Range("AK5:AR" & Lgc).Select
    ActiveWorkbook.Worksheets("Kalender").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Kalender").Sort.SortFields.Add Key:=Range( _
        "AR5:AR" & Lgc), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal 'Sorteer op maand
    ActiveWorkbook.Worksheets("Kalender").Sort.SortFields.Add Key:=Range( _
        "AQ5:AQ" & Lgc), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal 'Sorteer op dag
    With ActiveWorkbook.Worksheets("Kalender").Sort
        .SetRange Range("AK5:AR" & Lgc)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Alvast hartelijk bedankt voor het lezen.
 
Voorbeeldbestand nodig om te beoordelen of er gebruik kan worden gemaakt van bijv. currentregion.
 
Afhankelijk of Blad1 gelijk is aan "Kalender".
En: Laatste regel is de laatste regel aaneengesloten naar onderen vanaf AK5 en niet de laatste regel in kolom AK.
Code:
Sub Sorteren()
  Lgc = Blad1.Range("AK5").End(xlDown).Row 'Laatste regel nummer
Application.ScreenUpdating = False
    With sheets("Kalender")
       .Range("AK5:AR" & Lgc).Sort .range("AR5"),,.range("AQ5"),,,,,1
    End With
end sub

edit: traag?
 
snb,
Hartelijk bedankt voor het kijken/lezen.
Er staan vertrouwelijke gegevens in, dus liever plaats ik geen voorbeeld.

Misschien help het als ik vertel dat dit een tabel is genaamd Tabel1 met kopteksten.
 
HSV,

Hartelijk bedankt voor het inkorten van de opgenomen code.
Het werkt perfect, dit scheelt een hoop type werk. (als je het weet) :thumb:

Waarom schrijft Excel dan zoveel extra code als dit eigenlijk niet nodig is?
 
Geen idee waarom de opnames zo uitgebreid zijn.

Kijk eens in de Vba-help van Excel, en zoek op "range.sort".
Dan zie je hoe het is opgebouwd.
 
HSV,

Ik ga kijken bij "range.sorrt"
Ik hoop dat er ook de uitleg erbij staat wat de "," en de 1 doen/betekenen.

Nogmaals hartelijk bedankt.
 
Of het bereik kopteksten (headers) heeft.

De 1 betekent "xlyes"
xlguess = 0
xlNo = 2
 
Vertrouwelijk gegevens kan je vervangen door dummy gegevens. Blijkbaar heb je er geen echte tabel van gemaakt want dan zou de macro-opname er zo uit zien.

Code:
ActiveWorkbook.Worksheets("Kalender").ListObjects("Table1").Sort.SortFields.
en de rest.

De recorder neemt alleen stap voor stap op wat je aan het doen bent. De intelligentie om jouw stapjes te vertalen naar de beste/kortste code zit er (nog) niet in.
 
VenA,

Je heb helemaal gelijk, het was eerst geen tabel.
Later heb ik er een tabel van gemaakt.
De code van HSV werkt goed.
 
Dan hoef je de laatste rij niet meer te zoeken

Code:
Sub VenA()
  With Sheets("Kalender").ListObjects("Table1").Range
    .Sort .Cells(1, 8), , .Cells(1, 7), , , , , xlYes
  End With
End Sub
 
VenA,

Hartelijk bedankt voor de uitleg en de code. :thumb:
Ik heb nog niet kunnen vinden wat de "," doen.

Heb nog een test Tabel gemaakt met een kolom meer en dan werkt het ook.
 
De ruimtes tussen de "," zijn de argumenten waar je niets mee doet, maar ze hebben als doel dat je bij de argumenten komt die wel van doen zijn.
Doordat alle argumenten in volgorde liggen.

Je kan ze ook benoemen in de code.

Code:
 .Sort key1:=.Cells(1, 8),key2:=.Cells(1, 7),header:=xlYes
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan