Sorteren met een dubbelklik in Excel

Sorteren met een dubbelklik in Excel

Op 29 november 2023 verschijnt Het complete boek Excel VBAvoor professionals, geschreven door Wim de Groot. Over hoe u door middel van macro’s en eigen functies uw Excel-leven een stuk aangenamer maakt. Met dit boek leert u programmeren in VBA. Dit boek sluit naadloos aan op Excel 2021 en 365. We geven u een voorproefje: Sorteren met een dubbelklik in Excel…

Sorteren met een dubbelklik in Excel

Als u een lijst (een adreslijst bijvoorbeeld) wilt sorteren, vraagt dat een paar zorgvuldige handelingen. In het begin van dit boek wordt beschreven hoe u zo’n lijst snel sorteert met knopjes die u bovenaan de kolommen plaatst. Daarmee zet u een macro in werking en de rest gaat vanzelf. Maar het kan nog eenvoudiger: wat dacht u ervan om de lijst te sorteren door gewoon te dubbelklikken ergens in de desbetreffende kolom? Dat klinkt bijna als toveren, maar de VBA-code hiervoor is verrassend eenvoudig.

We maken hiervoor gebruik van een zogeheten zelfstartende macro. De meeste macro’s moet u aan het werk zetten door op een knop te klikken (of op een sneltoets te drukken). Maar u kunt de macro ook laten reageren op een verandering in het werkblad, bij het openen van een werkmap en wanneer u dubbelklikt. Een macro die automatisch reageert op zo’n gebeurtenis (een event), is een eventmacro. De VBA-code voor zo’n macro krijgt u niet door deze op te nemen, maar typt u zelf, als volgt:

Open het Excel-bestand met uw lijst, waarin u het volgende handigheidje wilt inbouwen. Open dan de Visual Basic Editor met een klik op Alt+F11 (of klik met de rechtermuisknop op de bladtab onderaan en kies Programmacode weergeven). Links in beeld ziet u de projectverkenner met de aanduiding VBAProject(Bestandsnaam) en daaronder Blad1(Blad1) en mogelijk meer laden. Dubbelklik daar op het werkblad waarin de procedure moet werken, bijvoorbeeld op Blad1. U ziet rechts in beeld, boven in het codevenster twee keuzelijsten (Algemeen) en (Declaraties). Open de linkerkeuzelijst en kies Worksheet. Door deze optie schrijft u code die reageert op iets wat in het werkblad gebeurt. Nadat u dat hebt gekozen, kunt u met de rechterkeuzelijst uit een aantal opties kiezen. Daar staan de gebeurtenissen binnen dit ene werkblad, waarop een macro automatisch kan reageren.

Dubbelklikt u op Blad1, dan kiest u links Worksheet en rechts een gebeurtenis in dat werkblad, BeforeDoubleClick in dit geval.Kies in de rechterlijst BeforeDoubleClick; in het codeblad verschijnen de volgende regels:

Private Sub Worksheet_BeforeDoubleClick _
	(ByVal Target As Range, Cancel As Boolean)
End Sub

Aan het feit dat de macronaam begint met Worksheet is te zien dat dit een zelfstartende macro is binnen een werkblad. Bij u zal de eerste regel één lange regel zijn, wij hebben hem alleen afgebroken voor de weergave in het boek.

Typ tussen deze beide regels de volgende regels met opdrachten over, zodat het geheel er als volgt uitziet:

Private Sub Worksheet_BeforeDoubleClick _
	(ByVal Target As Range, Cancel As Boolean)
Dim OndersteRij As Long
	OndersteRij = Cells(Rows.Count, 1).End(xlUp).Row
	Rows("2:" & OndersteRij).Sort _
	Key1:=Cells(2, ActiveCell.Column), Order1:=xlAscending
	ActiveCell.Offset(1, 0).Select
End Sub
  • De regels die met Private en met Rows beginnen, hebben we hier afgebroken met een spatie, onderstrepingsteken en Enter-toets; u mag daar in beide gevallen ook gewoon één lange regel van maken.

De code begrijpen

Deze code werkt als volgt:

We declareren een variabele die we OndersteRij noemen en die door As Long grote, hele getallen kan bevatten.

Eerst zoeken we het rijnummer van de onderste rij die gevuld is. Hiervoor beginnen we op de onderste rij van het werkblad via Rows.Count. Met Cells(Rows.Count, 1) selecteert de macro de onderste cel in kolom A (de 1 staat voor kolom nummer 1, dus kolom A). Vandaar springt End(xlUp) omhoog naar de onderste gevulde cel en door Row komt het rijnummer van die cel in de variabele OndersteRij.

Pas zo nodig hierin nummer 1 aan: als uw lijst begint bij kolom G, verander die 1 dan in 7 (kolom G is de zevende kolom). En controleer of onder in die kolom inderdaad de onderste gegevens staan (bevat die kolom enkele lege cellen, dan staan de onderste gegevens wellicht in een andere kolom).

In de volgende drie regels wordt het sorteren ingesteld. We laten hele rijen sorteren. We gaan ervan uit dat de opschriften bovenaan de lijst in rij 1 staan, die moeten blijven staan, dus het sorteren begint bij rij 2 en gaat tot en met de laatste gevulde rij, vandaar:

	Rows("2:" & OndersteRij)

Het argument Key1 geeft aan op welke kolom Excel moet sorteren. Dat is

	Key1:=Cells(2, ActiveCell.Column)

Excel sorteert op ActiveCell.Column, dat is de kolom van de actieve cel, want daarop hebt u gedubbelklikt. En ook hier begint het sorteren bij rij 2.

De laatste regel is:

	ActiveCell.Offset(1, 0).Select

Die is niet echt nodig, maar als u dubbelklikt op een cel (waarna de lijst wordt gesorteerd), staat de cursor in de cel alsof u die wilt bewerken. Het staat netter wanneer die cel niet meer actief is. Met deze opdracht wordt de cel geselecteerd onder de cel waarop u dubbelklikte.

De zelfstartende macro gebruiken

Nadat u deze macro op deze manier aan het bestand met uw lijst hebt toegevoegd, kunt u deze meteen gebruiken. Kijk op welke kolom u de lijst wilt sorteren en dubbelklik op een willekeurige cel in die kolom; de hele lijst wordt op die kolom gesorteerd.

10SorteerDubbelklik.png

U kunt de lijst sorteren door te dubbelklikken ergens in de kolom waarop u wilt sorteren.

Zo eenvoudig is het instellen van het sorteren met een dubbelklik in Excel!

Werkmap downloaden

Wanneer het boek verschijnt, kunt u een pakket van 220 gratis oefenbestanden downloaden. Het oefenbestand bij deze uitleg is: 10 Sorteren met Dubbelklik.

Het Complete Boek Excel VBA voor professionals

Als u vaak dezelfde bewerkingen in Excel uitvoert, laat ze dan door een macro doen. Die doet het automatisch, supersnel en nauwkeurig. Zo bespaart u zeeën van tijd, wordt uw werk gemakkelijker en profiteert u meer van de kracht van Excel. Macro’s worden geschreven in de taal VBA (Visual Basic for Applications). Daarin kunt u ook eigen rekenfuncties schrijven en dialoogvensters ontwerpen, waardoor u Excel nog krachtiger en veelzijdiger maakt.

In dit boek vindt u 550 macro’s en 40 rekenfuncties. Bij alle voorbeelden wordt stap voor stap uitgelegd hoe ze werken. Zo leert u in Het Complete Boek Excel VBA voor professionals de principes van VBA en kunt u ze aanpassen voor uw eigen werk.

De recentste tips over Microsoft Excel:

  • code optimaliseren in Excel VBA
    Code optimaliseren in Excel VBA

    Door aan de slag te gaan met code optimaliseren in Excel VBA verkort u deze niet alleen, maar maakt u ‘m ook sneller. Onderstaand fragment is afkomstig uit Het complete Boek Excel VBA voor professionals, 4e editie.

  • macro’s in Excel
    Macro’s maken en gebruiken in Excel

    Met macro’s in Excel kunt u allerlei zaken op een eenvoudige manier automatiseren door ze simpelweg op te nemen en weer af te spelen

  • Sorteren met een dubbelklik in Excel
    Sorteren met een dubbelklik in Excel

    Wat dacht u ervan om een lijst in Excel te sorteren door te dubbelklikken ergens in de desbetreffende kolom? Dat klinkt als toveren, maar de VBA-code hiervoor is verrassend eenvoudig.

  • verticale as in Excelgrafiek aanpassen
    De verticale as in een Excelgrafiek aanpassen

    Excel stelt bij een grafiek zelf de grootste en kleinste waarde van de verticale as in, maar zelf de verticale as in Excelgrafiek aanpassen is ook een optie. Hoe, dat lees je hier.

  • cellen kleuren met voorwaardelijk opmaak in Excel
    Cellen kleuren met voorwaardelijk opmaak in Excel

    Soms wordt een tabel wat onoverzichtelijk. Cellen kleuren met voorwaardelijke opmaak in Excel brengt dan helderheid!

  • werken met lijsten in Excel
    Werken met lijsten in Excel

    Je kunt van alles in lijstvorm zetten in een spreadsheet, bijvoorbeeld de welbekende adressenlijst. Werken met lijsten in Excel is dan ook een essentiële activiteit.


Al onze Excel-tips en trucs vind je HIER

Geef een reactie

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.