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

Selecteren en sorteren met variabel aantal rijen in macro

Status
Niet open voor verdere reacties.

ThijsL

Nieuwe gebruiker
Lid geworden
23 nov 2016
Berichten
2
Ik probeer een macro te maken waarbij ik alle rijen selecteer en deze sorteer. Dat heb ik gecodeerd met een opname en ziet eruit als onderstaand. Ik zie volgens mij wat er niet goed gaat: bij het sorteren selecteert de macro tot en met rij 602, waar ik eigenlijk met End(X1Down) de laatste gevulde rij wil selecteren. Alleen, als ik dit probeer aan te passen in de code, krijg ik telkens een foutmelding. Wat moet ik aanpassen in de code, zodat ik sorteer met alle rijen die ik in mijn spreadsheet heb staan?

Alvast veel dank!
Thijs

' SelecterenSorteren Macro
'

'
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("C2:C602") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B2:B602") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("L2:L602") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A1:L602")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
 
Als het een aaneengesloten bereik is vanaf A1 dan

Code:
Sub VenA()
  Sheets("Sheet1").Cells(1).CurrentRegion.Sort [C1], , [B1], , , [L1], , True
End Sub
 
Maar wat doet deze code?

Beste VenA,

Dank voor je snelle reactie. Ik had eigenlijk iets heel anders verwacht, maar werk nog niet zo lang met VBA, dus misschien zie ik het helemaal verkeerd. Ik zie dat ik eerst alles selecteer, mbv

Range(Selection, Selection.End(xlDown)).Select

Bij het sorteren zie ik vervolgens dat Excel sorteert op de nu geselecteerde rijen:

ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("C2:C602") _...

Ik had verwacht dat ik voor C602 iets anders moet typen, zodat ik niet tot en met rij C602 selecteer, maar tot de laatste rij. Iets soortgelijks als End(X1Down). Jouw oplossing is een hele andere. Ik kan met het plakken van de code ook niet precies zien wat er gebeurt, dus weet nu niet hoe ik dit moet toepassen. Kan je toelichten hoe ik deze code moet toepassen?

Dank!
Thijs
 
Kan je toelichten hoe ik deze code moet toepassen?
Als dit de concrete vraag is dan is het antwoord: gooi jouw code weg en plaats die van mij ervoor in de plaats.;)

De macrorecorder neemt letterlijk alle stapjes op waardoor je veel regels krijgt en waaruit ook blijkt dat je de sneltoetsen in Excel niet kent.

Code:
.Cells(1).CurrentRegion
is hetzelfde als <CTRL> + a binnen een aaneengesloten bereik die in A1 begint. Via de helpfunctie of via https://msdn.microsoft.com/en-us/library/office/ff840646.aspx kan je meer vinden over hoe de .Sort methode in elkaar steekt.

Nb. Plaats svp code tussen codetags.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan