Navigera kalkylblad
Svep för att visa menyn
Riktiga data har ingen etikett som talar om var de slutar. Att hårdkoda Range("A1:I5") slutar fungera den dag någon lägger till en sjätte order – därför behöver du fråga kalkylbladet var dess data slutar.
Hitta sista raden
Den mest använda kodraden i hela denna kurs:
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Läs detta från höger till vänster: börja längst ner i kolumn A (ws.Rows.Count), hoppa uppåt (End(xlUp)) tills du träffar den första ifyllda cellen och returnera dess radnummer. Det fungerar oavsett hur många ordrar som finns.
Hitta sista kolumnen
Fungerar på samma sätt, men i sidled:
Dim lastCol As Long
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
UsedRange
Rapporterar det fullständiga rektangulära området på bladet som någonsin har innehållit data — användbart för en snabb kontroll, men använd med försiktighet: det kommer ihåg celler som tidigare hade data även efter att du tagit bort innehållet, så det kan överskatta ditt faktiska dataområde.
Debug.Print ws.UsedRange.Address ' e.g. $A$1:$I$6
Debug.Print ws.UsedRange.Rows.Count ' 6
CurrentRegion
Vanligtvis det bättre verktyget: det expanderar utåt från en enskild cell till det sammanhängande dataområdet runt omkring, och stannar vid första tomma raden eller kolumnen — exakt som ett rent tabellområde 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
Uppgift
- Skriv en
Subsom hittar sista raden med hjälp av metodenEnd(xlUp)och skriver ut den i Direktfönstret. - I samma
Sub, hitta sista raden på ett annat sätt medCurrentRegion.Rows.Count, och skriv ut även det — bekräfta att de stämmer överens. - Lägg manuellt till en sjätte order på rad 7 i bladet, kör makrot igen och bekräfta att båda metoderna nu rapporterar 7 utan några kodändringar:
1. Hitta sista raden med End(xlUp)
- Börja längst ner i kolumn A och hoppa uppåt — samma mönster som i Kapitel 3:s avsnitt "Hitta sista raden".
Debug.Printresultatet så att det visas i Direktfönstret (Ctrl+G).
2. Hitta på ett annat sätt med CurrentRegion
CurrentRegionexpanderar från en enskild startcell (provaRange("A1")) till hela det sammanhängande blocket..Rows.Countpå det området inkluderar rubrikraden — kom ihåg kapitlets notering om att dra av 1 om du bara vill ha datarader. Eftersom denna uppgift bara ber dig jämföra de två metoderna, skriv ut det råa antalet först och resonera om rubriken i efterhand.
3. Lägg till en sjätte rad och kör igen
- Inga kodändringar behövs — skriv bara in en ny order direkt på rad 7 i kalkylbladet och kör samma
Subigen.
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
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal