• 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 met CustomOrder

Status
Niet open voor verdere reacties.

Jack Nouws

Terugkerende gebruiker
Lid geworden
16 apr 2008
Berichten
1.396
Zou het mogelijk zijn om de sorteercode wat korter te kunnen schrijven?
 

Bijlagen

  • MapSorteren.xlsm
    30,8 KB · Weergaven: 48
Zo dus, iets korter:
Code:
Sub Sorteren()
   With Blad1.Sort
      .SortFields.Clear
      .SortFields.Add Key:=Range("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="ma,di,wo,do,vr,za,zo", DataOption:=xlSortNormal
      .SetRange Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
      .Apply
    End With
End Sub
 
Kan nog wat korter
Code:
Sub VenA()
  Blad1.Cells(1).CurrentRegion.Sort Blad1.[A1], , , , , , , 1, 2
End Sub
 
Korter wel maar met niet goedgekeurd resultaat als gevolg. :)
 
Wat gaat er mis dan en hoe is de volgorde van jouw customlist?

Krijg je met deze code ma t/m zo te zien
Code:
Sub VenA()
  For Each it In Application.GetCustomListContents(1)
    c00 = c00 & it & vbLf
  Next it
  MsgBox c00
End Sub
 
Code:
msgbox join(Application.GetCustomListContents(1))
 
De vraag was/is om de dagen te sorteren volgens de weekdagen;
dus eerst alle maand. dan alle dinsd. enz.
 
@cobbe, dat is geen antwoord op de vragen die ik je gesteld hebt. Bij mij wordt de lijst van ma t/m zo gesorteerd door gebruik te maken van de cusomlist. In dit geval het tweede element wat het indexnummer 1 heeft.
 
Mijn customlist is - ma,di,wo,do,vr,za,zo -
 
Er worden een aantal standaard lijsten aangemaakt bij het installeren van Excel, en zou dat nummer 2 zijn zoals @VenA aangeeft in de code.

Maar als dat om een of ander redenen niet zo staat gaat dat fout natuurlijk.
GetCustomListNum +1

Alternatief:
Code:
Blad1.Range("A1:A2500").Sort [A1], , , , , , , 1, Application.GetCustomListNum(Array("ma", "di", "wo", "do", "vr", "za", "zo")) + 1

Als die er helemaal niet is lijkt me de beste manier om het aan te maken. ;)
 
Laatst bewerkt:
De dagen resp. ma,di,wo,do,vr,za,zo wil ik ook op deze volgorde gesorteerd hebben.
dus "zo, vr, wo, ma, do, di, za" =====> "ma, di, wo, do, vr, za, zo" van boven naar beneden

Juiste code staat er tussen dus bij deze,
allen vriendelijk bedankt :thumb:
 
Welke code heb je gebruikt?

Als je op een ander manier wil sorteren dan kan het ook zo
Code:
Sub VenA()
  With Application
    .AddCustomList Split("za zo ma di wo do vr")
    Blad1.Cells(1).CurrentRegion.Sort Blad1.[A1], , , , , , , 1, .CustomListCount + 1
    .DeleteCustomList .CustomListCount
  End With
End Sub

Waarom de +1 nodig is kan ik niet vinden. Uit de helpfunctie wordt ik ook niet veel wijzer
OrderCustom Optional Variant Specifies a one-based integer offset into the list of custom sort orders.
 
Laatst bewerkt:
ik gebruik momenteel deze code
Code:
Sub VenA()
  Blad1.Cells(1).CurrentRegion.Sort Blad1.[A1], , , , , , , 1, 2
End Sub
Ik kon in de helpindex niet al te veel vinden over de customlist.
Op internet kwam ik ook al niet veel verder dus vandaar deze vraag.

met vr gr Jack
 
V&A

Er kan een verschil zijn tussen het aantal elementen in een verzameling en het indexnumber van een element in een verzameling. (afhankelijk van de Option Base).

Vandaar #10.
 
Nog ff wat uitgeprobeerd nav reactie van snb :thumb:
 

Bijlagen

  • Sorteer test.xlsm
    21,5 KB · Weergaven: 47
Zo zal dat beter gaan.
Code:
Sub Dagen()
    With Application
      .AddCustomList Split("zo_ma_di_wo_do_vr_za", "_")
      Range("A2:C26").Sort Range("C2"), Ordercustom:=.CustomListCount [COLOR=#ff0000]+ 1[/COLOR]
     .DeleteCustomList .CustomListCount
     End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan