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.
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
- Skriv en
Subsom finner siste rad ved å brukeEnd(xlUp)-metoden og skriver det ut i Umiddelbar-vinduet. - I samme
Sub, finn siste rad på en annen måte ved å brukeCurrentRegion.Rows.Count, og skriv også ut dette — bekreft at de stemmer overens. - 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:
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.Printresultatet slik at det vises i Umiddelbar-vinduet (Ctrl+G).
2. Finne det på en annen måte med CurrentRegion
CurrentRegionutvider seg fra én startcelle (prøvRange("A1")) til hele sammenhengende blokken..Rows.Countpå 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
Subigjen.
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
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår