Navigere i regneark
Stryg for at vise menuen
Rigtige data kommer ikke med en etiket, der fortæller dig, hvor de slutter. At hardkode Range("A1:I5") fejler den dag, nogen tilføjer en sjette ordre — derfor skal du spørge arket, hvor dets data slutter.
Find den sidste række
Den mest anvendte kodelinje i hele dette kursus:
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Læs dette fra højre mod venstre: start helt nederst i kolonne A (ws.Rows.Count), hop opad (End(xlUp)) indtil du rammer den første udfyldte celle, og returnér dens rækkenummer. Det virker uanset, hvor mange ordrer der findes.
Find den sidste kolonne
Fungerer på samme måde, men vandret:
Dim lastCol As Long
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
UsedRange
Rapporterer det fulde rektangulære område på arket, der nogensinde har indeholdt data — nyttigt til et hurtigt overblik, men brug det med forsigtighed: det husker celler, der tidligere har indeholdt data, selv efter du har slettet indholdet, så det kan overvurdere dit faktiske dataområde.
Debug.Print ws.UsedRange.Address ' e.g. $A$1:$I$6
Debug.Print ws.UsedRange.Rows.Count ' 6
CurrentRegion
Normalt det bedre værktøj: udvider sig udad fra en enkelt celle til det sammenhængende datablok omkring den og stopper ved den første tomme række eller kolonne — matcher præcist en ren tabel 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
Opgave
- Skriv en
Sub, der finder den sidste række ved hjælp afEnd(xlUp)-metoden og udskriver den til Immediate Window. - I samme
Sub, find den sidste række på en anden måde ved hjælp afCurrentRegion.Rows.Count, og udskriv også dette — bekræft at de stemmer overens. - Tilføj manuelt en sjette ordre til række 7 i arket, kør makroen igen, og bekræft at begge metoder nu rapporterer 7 uden nogen kodeændringer:
1. Find den sidste række med End(xlUp)
- Start fra bunden af kolonne A og hop opad — samme mønster som i Kapitel 3's afsnit "Find den sidste række".
- Brug
Debug.Printfor at vise resultatet i Immediate-vinduet (Ctrl+G).
2. Find den på en anden måde med CurrentRegion
CurrentRegionudvider sig fra en enkelt startcelle (prøvRange("A1")) til hele det sammenhængende blok..Rows.Countpå det område inkluderer header-rækken — husk kapitlets note om at trække 1 fra, hvis du kun vil have datarækker. Da denne opgave blot beder dig sammenligne de to metoder, udskriv først det rå antal og overvej headeren bagefter.
3. Tilføj en sjette række og kør igen
- Ingen kodeændringer nødvendige — indtast blot en ny ordre direkte i række 7 i regnearket, og kør derefter den samme
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
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat