Excel VBA Range Object

⚡ Smart opsummering

Excel VBA Range Object repræsenterer én celle eller en gruppe af celler i et regneark. Denne side forklarer objekthierarkiet, egenskaberne Range og Cells, valg og reference til celler, læsning og skrivning af værdier og egenskaben Offset.

  • 🎯 Definition: Områdeobjektet peger på en enkelt celle, en række, en kolonne, en markering eller et 3D-område.
  • 🧬 Hierarki: En fuldt kvalificeret reference læser Applikation, Regneark, Derefter Område.
  • 🏷️ Egenskaber og metoder: En egenskab lagrer oplysninger om objektet, og en metode udfører en handling som f.eks. Vælg eller Merge.
  • 🔢 Celleegenskab: Celler (række, kolonne) adresserer en celle med nummer, hvilket passer til en programmeringsløkke.
  • ✍️ Læse og skrive: Egenskaben Værdi henter både en celles indhold og skriver nyt indhold tilbage.
  • ↔️ Modsat ejendom: Offset flytter en reference et bestemt antal rækker og kolonner fra dens startcelle.

Excel VBA Range Object

Hvad er VBA Range?

VBA-områdeobjektet repræsenterer en celle eller flere celler i dit Excel-regneark. Det er det vigtigste objekt i Excel VBA. Ved at bruge Excel VBA-områdeobjekt kan du henvise til,

  • En enkelt celle
  • En række eller en kolonne af celler
  • Et udvalg af celler
  • Et 3D-område

Som vi diskuterede i vores tidligere vejledning, bruges VBA til at optage og køre en MakroMen hvordan identificerer VBA, hvilke data på arket der skal arbejdes med? Det er her, VBA Range Objects er nyttige.

Introduktion til referenceobjekter i VBA

Referencer til Excels VBA Range Object og Object Qualifier.

  • Objektkvalifikation: Dette bruges til at henvise til objektet. Det specificerer den projektmappe eller det regneark, du henviser til.

For at manipulere disse celleværdier, Ejendomme og Metoder er brugt.

  • Ejendom: En ejendom gemmer information om objektet.
  • Metode: En metode er en handling af det objekt, den vil udføre. Områdeobjekt kan udføre handlinger som valgt, kopieret, ryddet, sorteret osv.

VBA følger et objekthierarkimønster for at referere til et objekt i Excel. Du skal følge strukturen nedenfor. Husk, at .punktummet her forbinder objektet på hvert af de forskellige niveauer.

Anvendelse.Workbooks.Worksheets.Range

Dette hierarki kan nås via to forskellige egenskaber, og egenskaben Range er den, der bruges oftest.

Sådan henvises til Excel VBA Range Object ved hjælp af Range-egenskaben

Områdeegenskab kan anvendes i to forskellige typer objekter.

  • Arbejdsarkobjekter
  • Rækkevidde objekter

Syntaks for Range Property

  1. Søgeordet "Range".
  2. Parentes, der følger søgeordet
  3. Relevant celleområde
  4. Citat (" ")
Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1")

Når du henviser til Range-objekt, som vist ovenfor, omtales det som fuldt kvalificeret referenceDu har fortalt Excel præcis hvilket område du vil have, hvilket ark og i hvilket regneark.

EksempelBeskedBox Regneark("Ark1").Område("A1").Værdi

Ved at bruge Range-egenskaber kan du udføre mange opgaver som,

  • Henvis til en enkelt celle ved hjælp af områdeegenskab
  • Henvis til en enkelt celle ved hjælp af egenskaben Worksheet.Range
  • Henvis til en hel række eller kolonne
  • Henvis til flettede celler ved hjælp af Worksheet.Range Property og mange flere

Som sådan vil det være for langvarigt at dække alle scenarier for områdeejendomme. For scenarier nævnt ovenfor vil vi kun vise et eksempel for én. Henvis til en enkelt celle ved hjælp af områdeegenskab.

Henvis til en enkelt celle ved hjælp af egenskaben Worksheet.Range

For at referere til én celle skal du sende dens adresse til Range-egenskaben som en tekststreng.

Syntaks er enkel "Range ("Celle")".

Her vil vi bruge ".Select"-kommandoen til at vælge den enkelte celle fra arket.

Trin 1) I dette trin skal du åbne din Excel-fil.

Enkeltcelle ved hjælp af egenskaben Worksheet.Range

Trin 2) I dette trin,

  • Klik på Enkeltcelle ved hjælp af egenskaben Worksheet.Range .
  • Det åbner et vindue.
  • Indtast dit programnavn her, og klik på knappen 'OK'.
  • Det vil tage dig til hoved Excel-fil, fra topmenuen, klik på 'stop' optageknappen for at stoppe optagelsen af ​​makro.

Enkeltcelle ved hjælp af egenskaben Worksheet.Range

Trin 3) I næste trin,

  • Klik på Makro-knappen Enkeltcelle ved hjælp af egenskaben Worksheet.Range fra topmenuen. Det åbner vinduet nedenfor.
  • I dette vindue skal du klikke på 'rediger'-knappen.

Enkeltcelle ved hjælp af egenskaben Worksheet.Range

Trin 4) Ovenstående trin åbner VBA-kodeeditoren for filnavnet "Single Cell Range". Indtast koden som vist nedenfor for at vælge området "A1" fra Excel-arket.

Sub SingleCellRange()
    Range("A1").Select
End Sub

Enkeltcelle ved hjælp af egenskaben Worksheet.Range

Trin 5) Gem nu filen Enkeltcelle ved hjælp af egenskaben Worksheet.Range og kør programmet som vist nedenfor.

Enkeltcelle ved hjælp af egenskaben Worksheet.Range

Trin 6) Du vil se Celle "A1" er valgt efter udførelse af programmet.

Enkeltcelle ved hjælp af egenskaben Worksheet.Range

Ligeledes kan du vælge en celle med et bestemt navn. Hvis du f.eks. vil søge efter en celle med navnet "Guru99- VBA-vejledning”. Du skal køre kommandoen som vist nedenfor. Den vil markere cellen med det navn.

Rækkevidde("Guru99- VBA-vejledning”). Vælg

For at anvende et andet områdeobjekt her er kodeeksemplet.

Område til valg af celle i Excel Rækkevidde erklæret
Til enkelt række Interval ("1:1")
Til enkelt kolonne Interval("A:A")
Til sammenhængende celler Område(“A1:C5”)
Til ikke-sammenhængende celler Område(“A1:C5, F1:F5”)
Til skæring af to områder Range(“A1:C5 F1:F5”)
(For skæringscelle, husk, at der ikke er nogen kommaoperator)
For at flette celle Område(“A1:C5”)
(For at flette celle brug kommandoen "flet")

At markere en celle er kun det første trin. I praksis læser en makro, hvad en celle indeholder, og skriver en ny værdi tilbage.

Sådan læser og skriver du værdier med Range-objektet

Næsten alle makroer, der berører et regneark, gør en af ​​to ting: de læser en værdi ud af en celle, eller de skriver en værdi ind. Begge går gennem egenskaben Værdi, og ingen af ​​dem kræver, at cellen først vælges.

Sub ReadAndWrite()
    Dim Price As Double
    Dim Qty As Long

    ' Read two values out of the sheet
    Price = Range("B1").Value
    Qty = Range("B2").Value

    ' Write the calculated result back
    Range("B3").Value = Price * Qty

    ' Fill a whole block in one statement
    Range("D1:D10").Value = "Guru99"

    ' Clear only the contents, keeping the formatting
    Range("F1:F10").ClearContents
End Sub

Fire punkter gør dette mønster pålideligt.

  • Vælg er ikke påkrævet: Skrivning Interval("B3").Værdi = 10 er hurtigere og sikrere end at markere cellen først. Optagede makroer er fulde af .Select, fordi optageren afspejler musehandlinger, ikke fordi koden har brug for det.
  • Værdi versus tekst: .Value returnerer de underliggende data, mens .Text returnerer den formaterede streng, der vises på skærmen, og som kan afkortes med kolonnebredde. Læs .Value i beregninger.
  • Hele blokke på én linje: Tildeling til et område med flere celler udfylder hver celle på én gang, hvilket er langt hurtigere end at seping.
  • Ryd det rigtige: Ryd indhold fjerner kun værdier, Ryd fjerner også formatering, og Slet fjerner cellerne og flytter dem omkring dem.

Område adresserer en celle med dens bogstav og tal. En anden egenskab adresserer den samme celle med to tal i stedet.

Celleegenskab

På samme måde som rækkevidden, i VBA Du kan også bruge "Celleegenskaben". Den eneste forskel er, at den har en "item"-egenskab, som du bruger til at referere til cellerne i dit regneark. Celleegenskaben er nyttig i en programmeringsløkke.

For eksempel:

Cells.item(Række, Kolonne). Begge linjer nedenfor refererer til celle A1.

  • Cells.item(1,1) ELLER
  • Cells.item(1,"A")

Forskellen mellem rækkevidde og celler i VBA

Område og celler når de samme regnearksceller ad forskellige ruter, og korrekt valg gør koden kortere og nemmere at læse.

Forskelspunkt Rækkevidde Celler
Adresseformat En tekststreng, Interval("A1") To tal, Celler(1, 1)
Flere celler Ja, Interval("A1:C5") Én celle ad gangen
Inde i en løkke Kræver strengsammenkædning Rækkenummeret kan være løkketælleren
Læsbarhed Matcher den adresse, du ser i Excel Kolonne 27 er sværere at forestille sig end AA
Kombineret brug Range(Cells(1, 1), Cells(5, 3)) bygger A1:C5 ud fra tal

Den praktiske regel er at bruge Range til en fast adresse, du kan læse med et hurtigt blik, og Cells, når et række- eller kolonnenummer beregnes under kørsel.

Egenskab for områdeforskydning

Egenskaben Range offset vil vælge rækker/kolonner væk fra dens oprindelige position. På grundlag af det deklarerede område vælges celler. Se eksempel nedenfor.

For eksempel:

Range("A1").Offset(RowOffset:=1, ColumnOffset:=1).Select

Resultatet for dette bliver celle B2. Offset-egenskaben flytter A1-cellen 1 kolonne og 1 række væk. Du kan ændre værdien af ​​RowOffset / ColumnOffset efter behov. Du kan bruge en negativ værdi (-1) til at flytte celler bagud.

Download Excel, der indeholder ovenstående kode

Download ovenstående Excel-fil Code

Ofte Stillede Spørgsmål

Brug Cells(Rows.Count, 1).End(xlUp).Row. Den starter nederst i kolonne A og hopper op til den sidste celle, der indeholder data, hvilket er mere pålideligt end UsedRange, efter at rækker er blevet slettet.

Enhver læsning eller skrivning krydser mellem VBA og Excel. Indlæs området i et array med en enkelt tildeling, behandl arrayet i hukommelsen, og skriv det derefter tilbage i én sætning. Det hjælper også at slå ScreenUpdating fra.

Normalt en ugyldig adresse, et arknavn der ikke findes, eller et forsøg på at vælge et område på et regneark, der ikke er aktivt. Kvalificér referencen med arket, eller aktiver arket først.

Ja. Indsæt den optagede kode, og en AI-assistent erstatter hvert Select- og Selection-par med en direkte, fuldt kvalificeret Range-reference. Kør begge versioner på en kopi, og sammenlign arket, før du beholder.ping forandringen.

Ja. Beskriv målet, f.eks. hver udfyldt række i kolonne A til D på dataarket, og en AI-assistent returnerer det matchende Range-udtryk. Bekræft det mod en lille stikprøve, før du kører det på livedata.

Opsummer dette indlæg med: