Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Werkbladen Navigeren | Werken met Excel-gegevens
Excel VBA voor Bedrijfsautomatisering

Werkbladen Navigeren

Veeg om het menu te tonen

Echte gegevens hebben geen label dat aangeeft waar ze eindigen. Het hardcoderen van Range("A1:I5") werkt niet meer zodra iemand een zesde order toevoegt — daarom moet je het werkblad vragen waar de gegevens eindigen.

De laatste rij vinden

De meest gebruikte code in deze hele cursus:

Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

Lees dit van rechts naar links: begin helemaal onderaan kolom A (ws.Rows.Count), spring omhoog (End(xlUp)) tot je de eerste bezette cel tegenkomt, en geef het rijnummer terug. Dit werkt ongeacht het aantal orders.

Figuur 3.2

De laatste kolom vinden

Werkt op dezelfde manier, maar dan horizontaal:

Dim lastCol As Long
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

UsedRange

Geeft het volledige rechthoekige gebied van het werkblad weer dat ooit gegevens heeft bevat — handig voor een snelle controle, maar gebruik het met voorzichtigheid: het onthoudt cellen die eerder gegevens hadden, zelfs nadat je hun inhoud hebt verwijderd, waardoor het je daadwerkelijke gegevensbereik kan overschatten.

Debug.Print ws.UsedRange.Address        ' e.g. $A$1:$I$6
Debug.Print ws.UsedRange.Rows.Count     ' 6

CurrentRegion

Meestal het betere hulpmiddel: breidt zich uit vanuit één cel naar het aaneengesloten gegevensblok eromheen en stopt bij de eerste lege rij of kolom — komt exact overeen met een nette tabel zoals Orders:

Dim tableRange As Range
Set tableRange = ws.Range("A1").CurrentRegion
Debug.Print tableRange.Address           ' $A$1:$I$6
Debug.Print tableRange.Rows.Count - 1    ' 5 — subtract 1 to exclude the header

Taak

  1. Schrijf een Sub die de laatste rij vindt met de End(xlUp)-methode en deze afdrukt in het Directvenster.
  2. Zoek in dezelfde Sub de laatste rij op een tweede manier met CurrentRegion.Rows.Count en druk deze ook af — controleer of ze overeenkomen.
  3. Voeg handmatig een zesde order toe op rij 7 van het werkblad, voer je macro opnieuw uit en controleer of beide methoden nu 7 rapporteren zonder enige codewijzigingen:
Hint
expand arrow

1. De laatste rij vinden met End(xlUp)

  • Begin helemaal onderaan kolom A en spring omhoog — hetzelfde patroon als in hoofdstuk 3, sectie "De laatste rij vinden".
  • Gebruik Debug.Print om het resultaat te tonen in het Direct-venster (Ctrl+G).

2. Op een tweede manier vinden met CurrentRegion

  • CurrentRegion breidt uit vanaf één startcel (probeer Range("A1")) tot het volledige aaneengesloten blok.
  • .Rows.Count op die regio telt ook de koprij mee — let op de opmerking in het hoofdstuk over het aftrekken van 1 als je alleen datarijen wilt. Omdat deze taak alleen vraagt om de twee methoden te vergelijken, print eerst het ruwe aantal en redeneer daarna over de koprij.

3. Een zesde rij toevoegen en opnieuw uitvoeren

  • Geen codewijzigingen nodig — typ gewoon een nieuwe order direct in rij 7 van het werkblad en voer dezelfde Sub opnieuw uit.
Oplossing
expand arrow
Sub CompareLastRowMethods()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Orders")

    Dim lastRowMethod1 As Long
    lastRowMethod1 = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    Debug.Print "End(xlUp): " & lastRowMethod1

    Dim lastRowMethod2 As Long
    lastRowMethod2 = ws.Range("A1").CurrentRegion.Rows.Count
    Debug.Print "CurrentRegion: " & lastRowMethod2
End Sub
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 2

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 3. Hoofdstuk 2
some-alt