Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Navigere i regneark | Arbeide med Excel-data
Excel VBA for Forretningsautomatisering

Navigere i regneark

Sveip for å vise menyen

Ekte data kommer ikke med en etikett som forteller deg hvor de slutter. Hardkoding av Range("A1:I5") slutter å fungere den dagen noen legger til en sjette ordre — derfor må du spørre arket hvor dataene slutter.

Finne siste rad

Den mest brukte kodelinjen i hele dette kurset:

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

Les dette fra høyre mot venstre: start helt nederst i kolonne A (ws.Rows.Count), hopp oppover (End(xlUp)) til du treffer den første utfylte cellen, og returner radnummeret. Dette fungerer uansett hvor mange ordrer som finnes.

Figur 3.2

Finne siste kolonne

Fungerer på samme måte, men sidelengs:

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

UsedRange

Rapporterer det fullstendige rektangulære området på arket som noen gang har inneholdt data — nyttig for en rask kontroll, men bruk det med forsiktighet: det husker celler som tidligere hadde data selv etter at du har slettet innholdet, så det kan overvurdere det faktiske dataområdet ditt.

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

CurrentRegion

Vanligvis det bedre verktøyet: det utvider seg utover fra én enkelt celle til den sammenhengende blokken med data rundt, og stopper ved første tomme rad eller kolonne — samsvarer nøyaktig med en ryddig tabell som 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

Oppgave

  1. Skriv en Sub som finner siste rad ved å bruke End(xlUp)-metoden og skriver det ut i Umiddelbar-vinduet.
  2. I samme Sub, finn siste rad på en annen måte ved å bruke CurrentRegion.Rows.Count, og skriv også ut dette — bekreft at de stemmer overens.
  3. Legg manuelt til en sjette ordre på rad 7 i arket, kjør makroen på nytt, og bekreft at begge metodene nå rapporterer 7 uten noen endringer i koden:
Tips
expand arrow

1. Finne siste rad med End(xlUp)

  • Start fra helt nederst i kolonne A og hopp oppover — samme mønster som i kapittel 3, "Finne siste rad".
  • Debug.Print resultatet slik at det vises i Umiddelbar-vinduet (Ctrl+G).

2. Finne det på en annen måte med CurrentRegion

  • CurrentRegion utvider seg fra én startcelle (prøv Range("A1")) til hele sammenhengende blokken.
  • .Rows.Count på dette området inkluderer overskriftsraden — husk kapittelets merknad om å trekke fra 1 hvis du kun vil ha datarader. Siden denne oppgaven bare ber deg sammenligne de to metodene, skriv ut det rå antallet først og vurder overskriften etterpå.

3. Legge til en sjette rad og kjøre på nytt

  • Ingen endringer i koden nødvendig — bare skriv inn en ny ordre direkte i rad 7 i regnearket, og kjør samme Sub igjen.
Løsning
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
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 2

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 3. Kapittel 2
some-alt