Arbejde med Celler og Spænder i Excel VBA (Markere, Kopiere, Flytte, Redigere)

0 Comments

Når du arbejder med Excel, det meste af din tid er brugt i regnearket område – der beskæftiger sig med celler og områder.

og hvis du vil automatisere dit arbejde i E .cel ved hjælp af VBA, skal du vide, hvordan du arbejder med celler og intervaller ved hjælp af VBA.

der er mange forskellige ting, du kan gøre med intervaller i VBA (såsom vælg, Kopier, Flyt, Rediger osv.).

så for at dække dette emne vil jeg bryde denne tutorial i sektioner og vise dig, hvordan du arbejder med celler og intervaller i E .cel VBA ved hjælp af eksempler.,

lad os komme i gang.

alle de koder, jeg nævner i denne tutorial, skal placeres i VB-editoren. Gå til afsnittet’ Hvor skal du placere VBA-koden ‘ for at vide, hvordan det fungerer.

Hvis du er interesseret i at lære VBA på den nemme måde, så tjek min Online e .cel VBA-træning.

Denne Tutorial Dækker:

Valg af en Celle / Række i Excel ved hjælp af VBA

for At arbejde med celler og spænder i Excel ved hjælp af VBA, du behøver ikke at vælge det.

i de fleste tilfælde har du det bedre ikke at vælge celler eller intervaller (som vi vil se).,

På trods af det er det vigtigt, at du gennemgår dette afsnit og forstår, hvordan det fungerer. Dette vil være afgørende i din VBA-læring, og en masse koncepter, der er dækket her, vil blive brugt i hele denne tutorial.

så lad os starte med et meget simpelt eksempel.

Valg af en Enkelt Celle ved Hjælp af VBA

Hvis du ønsker at vælge en enkelt celle i det aktive ark (siger A1), så kan du bruge den nedenstående kode:

Sub SelectCell()Range("A1").SelectEnd Sub

ovenstående kode har den obligatoriske ” Sub ” og “End Sub’ en del, og en linje kode, der vælger celle A1.,

rækkevidde(“A1”) fortæller VBA adressen på den celle, som vi vil henvise til.

Select er en metode til Range-objektet og vælger de celler / område, der er angivet i Range-objektet. Cellehenvisningerne skal vedlægges i dobbelt citater.

denne kode viser en fejl, hvis et diagramark er et aktivt ark. Et diagramark indeholder diagrammer og bruges ikke i vid udstrækning. Da den ikke har celler/intervaller i den, kan ovenstående kode ikke vælge den og vil ende med at vise en fejl.bemærk, at da du vil vælge cellen i det aktive ark, skal du bare angive celleadressen.,

men hvis du vil vælge cellen i et andet ark (lad os sige Sheet2), skal du først aktivere Sheet2 og derefter vælge cellen i den.

Sub SelectCell()Worksheets("Sheet2").ActivateRange("A1").SelectEnd Sub

På samme måde kan du også aktivere en projektmappe, derefter aktivere et specifikt regneark i det og derefter vælge en celle.

Sub SelectCell()Workbooks("Book2.xlsx").Worksheets("Sheet2").ActivateRange("A1").SelectEnd Sub

Bemærk, at når du henviser til arbejdsbøger, skal du bruge det fulde navn sammen med filtypenavnet (.abovels.i ovenstående kode). Hvis projektmappen aldrig er blevet gemt, behøver du ikke bruge filtypenavnet.,

nu er disse eksempler ikke særlig nyttige, men du vil se senere i denne tutorial, hvordan vi kan bruge de samme koncepter til at kopiere og indsætte celler i E .cel (ved hjælp af VBA).

ligesom vi vælger en celle, kan vi også vælge en rækkevidde.

i tilfælde af et interval kan det være et fast størrelsesområde eller et variabelt størrelsesområde.

i et fast størrelsesområde vil du vide, hvor stort området er, og du kan bruge den nøjagtige størrelse i din VBA-kode. Men med et variabelt størrelsesområde har du ingen ID.om, hvor stort sortimentet er, og du skal bruge en lille smule VBA-magi.

lad os se, hvordan du gør dette.,

valg af et Fi. – størrelsesområde

Her er koden, der vælger området A1:d20.

Sub SelectRange()Range("A1:D20").SelectEnd Sub

en Anden måde at gøre dette på er ved hjælp af nedenstående kode:

Sub SelectRange()Range("A1", "D20").SelectEnd Sub

ovenstående kode er af den øverste venstre celle-adresse (A1) og nederste højre celle-adresse (D20) og vælger hele området. Denne teknik bliver nyttig, når du arbejder med forskellige størrelser (som vi vil se, hvornår Slutegenskaben er dækket senere i denne tutorial).,

Hvis du ønsker, at markeringen skal ske i en anden projektmappe eller et andet regneark, skal du fortælle VBA de nøjagtige navne på disse objekter.

for eksempel vælger nedenstående kode intervallet A1:d20 i Sheet2-regnearket i Book2-projektmappen.

Sub SelectRange()Workbooks("Book2.xlsx").Worksheets("Sheet1").ActivateRange("A1:D20").SelectEnd Sub

hvad nu hvis du ikke ved, hvor mange rækker der er. Hvad hvis du vil vælge alle de celler, der har en værdi i den.

i disse tilfælde skal du bruge metoderne vist i næste afsnit (ved valg af variabelt størrelsesområde).,

valg af et variabelt størrelsesområde

Der er forskellige måder, du kan vælge en række celler på. Den metode, du vælger, afhænger af, hvordan dataene er struktureret.

i dette afsnit vil jeg dække nogle nyttige teknikker, der er virkelig nyttige, når du arbejder med intervaller i VBA.

Vælg Brug af Currentrange-ejendom

i tilfælde, hvor du ikke ved, hvor mange rækker / kolonner der har dataene, kan du bruge Currentrange-egenskaben for Rækkeobjektet.

egenskaben CurrentRange dækker alle de tilstødende fyldte celler i et dataområde.,

nedenfor er koden, der vælger den aktuelle region, der indeholder celle A1.

Sub SelectCurrentRegion()Range("A1").CurrentRegion.SelectEnd Sub

ovenstående metode er god, når du har alle data som en tabel uden tomme rækker / kolonner i den.

men hvis du har tomme rækker/kolonner i dine data, vælger den ikke dem efter de tomme rækker / kolonner. På billedet herunder vælger CurrentRegion-koden data til række 10, Da række 11 er tom.

i sådanne tilfælde kan du bruge egenskaben UsedRange for Regnearkobjektet.,

Vælg Brug af UsedRange-ejendom

UsedRange giver dig mulighed for at henvise til alle celler, der er blevet ændret.

så nedenstående kode ville vælge alle de brugte celler i det aktive ark.

Sub SelectUsedRegion()ActiveSheet.UsedRange.SelectEnd Sub

Bemærk, at hvis du har en fjern celle, der er blevet brugt, vil den blive overvejet af ovenstående kode, og alle cellerne, indtil den brugte celle ville blive valgt.

Vælg ved hjælp af Slutegenskaben

nu er denne del virkelig nyttig.

Slutegenskaben giver dig mulighed for at vælge den sidst fyldte celle., Dette giver dig mulighed for at efterligne effekten af kontrol ned/Op piletast eller kontrol højre/venstre taster.

lad os prøve at forstå dette ved hjælp af et eksempel.

Antag, at du har et datasæt som vist nedenfor, og du vil hurtigt vælge de sidst fyldte celler i kolonne A.

problemet her er, at data kan ændres, og du ved ikke, hvor mange celler der er fyldt. Hvis du skal gøre dette ved hjælp af tastaturet, kan du vælge celle A1 og derefter bruge kontrol + pil ned-tasten, og den vælger den sidst udfyldte celle i kolonnen.

lad os nu se, hvordan du gør dette ved hjælp af VBA., Denne teknik er praktisk, når du hurtigt vil springe til den sidste celle fyldt i en variabel størrelse kolonne

Sub GoToLastFilledCell()Range("A1").End(xlDown).SelectEnd Sub

ovenstående kode vil hoppe til det sidste fyldt celle i kolonne A.

Ligeledes kan du bruge Enden(xlToRight) for at hoppe til det sidste fyldt celle i en række.

Sub GoToLastFilledCell()Range("A1").End(xlToRight).SelectEnd Sub

hvad nu hvis du vil vælge hele kolonnen i stedet for at hoppe til den sidst fyldte celle.,

Du kan gøre det ved hjælp af koden nedenfor:

Sub SelectFilledCells()Range("A1", Range("A1").End(xlDown)).SelectEnd Sub

i ovenstående kode har vi brugt den første og den sidste reference til cellen, som vi skal vælge. Uanset hvor mange fyldte celler der er, vælger ovenstående kode alle.

husk eksemplet ovenfor, hvor vi valgte området A1:D20 ved at bruge følgende kodelinje:

rækkevidde(“A1″,”D20”)

Her var A1 den øverste venstre celle, og D20 var den nederste højre celle i området. Vi kan bruge den samme logik til at vælge variabelt store intervaller., Men da vi ikke kender den nøjagtige adresse på den nederste højre celle, brugte vi Slutegenskaben til at få den.

inden for rækkevidde(“A1”, rækkevidde(“A1″).Ende (endldo .n)),” A1″henviser til den første celle og rækkevidde (“A1”).Ende(endldo .n) henviser til den sidste celle. Da vi har givet begge referencer, vælger Select-metoden alle celler mellem disse to referencer.

På samme måde kan du også vælge et helt datasæt, der har flere rækker og kolonner.

nedenstående kode vælger alle de udfyldte rækker / kolonner, der starter fra celle A1.,

Sub SelectFilledCells()Range("A1", Range("A1").End(xlDown).End(xlToRight)).SelectEnd Sub

i ovenstående kode har vi brugt rækkevidde(“A1”).Ende(endldo .n).Slut (lltoright) for at få referencen til den nederste højre fyldte celle i datasættet.

forskel mellem at bruge CurrentRegion og End

Hvis du undrer dig over, hvorfor bruge end-egenskaben til at vælge det udfyldte interval, når vi har currentregion-egenskaben, så lad mig fortælle dig forskellen.

Med Slutegenskab kan du angive startcellen., Har dine data i A1: D20, men den første række er overskrifter, kan du bruge slutegenskaben til at vælge dataene uden overskrifterne (ved hjælp af koden nedenfor).

Sub SelectFilledCells()Range("A2", Range("A2").End(xlDown).End(xlToRight)).SelectEnd Sub

men den nuværende Region vælger automatisk hele datasættet, inklusive overskrifterne.

indtil videre i denne tutorial har vi set, hvordan man henviser til en række celler ved hjælp af forskellige måder.lad os nu se nogle måder, hvor vi faktisk kan bruge disse teknikker til at få noget arbejde udført.,

Kopier celler/intervaller ved hjælp af VBA

som jeg nævnte i begyndelsen af denne tutorial, er det ikke nødvendigt at vælge en celle for at udføre handlinger på den. Du vil se i dette afsnit, hvordan du kopierer celler og intervaller uden selv at vælge disse.

lad os starte med et simpelt eksempel.

kopiering af enkeltcelle

Hvis du vil kopiere celle A1 og indsætte den i celle D1, ville nedenstående kode gøre det.

Sub CopyCell()Range("A1").Copy Range("D1")End Sub

Bemærk, at kopimetoden for områdeobjektet kopierer cellen (ligesom Control +C) og indsætter den i den angivne destination.,

i ovenstående eksempelkode er destinationen angivet i den samme linje, hvor du bruger Kopieringsmetoden. Hvis du vil gøre din kode endnu mere læsbar, kan du bruge nedenstående kode:

Sub CopyCell()Range("A1").Copy Destination:=Range("D1")End Sub

ovenstående koder kopierer og indsætter værdien såvel som formatering/formler i den.

som du måske allerede har bemærket, kopierer ovenstående kode cellen uden at vælge den. Uanset hvor du er på regnearket, kopierer koden celle A1 og indsætter den på D1.

Bemærk også, at ovenstående kode overskriver enhver eksisterende kode i celle D2., Hvis du vil have e .cel til at fortælle dig, om der allerede er noget i celle D1 uden at overskrive det, kan du bruge koden nedenfor.

Kopiering af en Fix Mellemstore Vifte

Hvis du ønsker at kopiere A1:D20 i J1:M20, kan du bruge den nedenstående kode:

Sub CopyRange()Range("A1:D20").Copy Range("J1")End Sub

I destination celle, du skal blot angive adressen på den øverste venstre celle. Koden kopierer automatisk det nøjagtige kopierede interval til destinationen.

Du kan bruge den samme konstruktion til at kopiere data fra et ark til det andet.

nedenstående kode ville kopiere A1:d20 fra det aktive ark til Sheet2.,

Sub CopyRange()Range("A1:D20").Copy Worksheets("Sheet2").Range("A1")End Sub

ovenstående kopierer dataene fra det aktive ark. Så sørg for, at det ark, der har dataene, er det aktive ark, før du kører koden. For at være sikker kan du også angive regnearkets navn, mens du kopierer dataene.

Sub CopyRange()Worksheets("Sheet1").Range("A1:D20").Copy Worksheets("Sheet2").Range("A1")End Sub

det gode ved ovenstående kode er, at uanset hvilket ark der er aktivt, vil det altid kopiere dataene fra Sheet1 og indsætte dem i Sheet2.

Du kan også kopiere et navngivet område ved at bruge dets navn i stedet for referencen.,hvis du for eksempel har et navngivet område kaldet ‘SalesData’, kan du bruge nedenstående kode til at kopiere disse data til Sheet2.

Sub CopyRange()Range("SalesData").Copy Worksheets("Sheet2").Range("A1")End Sub

Hvis omfanget af det navngivne område er hele projektmappen, behøver du ikke være på det ark, der har det navngivne område for at køre denne kode. Da det navngivne område er scoped for projektmappen, kan du få adgang til det fra ethvert ark ved hjælp af denne kode.

Hvis du har en tabel med navnet Table1, kan du bruge nedenstående kode til at kopiere den til Sheet2.

Sub CopyTable()Range("Table1").Copy Worksheets("Sheet2").Range("A1")End Sub

Du kan også kopiere et interval til en anden projektmappe.,

i det følgende eksempel kopierer jeg e .cel-tabellen (Table1) til Book2-projektmappen.

Sub CopyCurrentRegion()Range("Table1").Copy Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1")End Sub

denne kode fungerer kun, hvis projektmappen allerede er åben.kopiering af et variabelt størrelsesområde

en måde at kopiere variable størrelsesområder på er at konvertere disse til navngivne intervaller eller e .cel-tabel og bruge koderne som vist i det foregående afsnit.

men hvis du ikke kan gøre det, kan du bruge CurrentRegion eller slutegenskaben for rækkeobjektet.

nedenstående kode ville kopiere det aktuelle område i det aktive ark og indsætte det i Sheet2.,

Sub CopyCurrentRegion()Range("A1").CurrentRegion.Copy Worksheets("Sheet2").Range("A1")End Sub

Hvis du ønsker at kopiere den første kolonne i dine data til den sidste celle fyldt og indsætte det i Sheet2, kan du bruge den nedenstående kode:

Sub CopyCurrentRegion()Range("A1", Range("A1").End(xlDown)).Copy Worksheets("Sheet2").Range("A1")End Sub

Hvis du ønsker at kopiere rækker, samt kolonner, kan du bruge den nedenstående kode:

Sub CopyCurrentRegion()Range("A1", Range("A1").End(xlDown).End(xlToRight)).Copy Worksheets("Sheet2").Range("A1")End Sub

Bemærk, at alle disse koder ikke skal du markere de celler, samtidig med at få udført. Generelt finder du kun en håndfuld tilfælde, hvor du faktisk skal vælge en celle/rækkevidde, før du arbejder på den.,

tildeling af Intervaller til Objektvariabler

indtil videre har vi brugt den fulde adresse på cellerne (såsom arbejdsbøger(“Book2.XLS””).Regneark (“Sheet1”).Område(“A1”)).

for at gøre din kode mere håndterbar kan du tildele disse intervaller til objektvariabler og derefter bruge disse variabler.i nedenstående kode har jeg for eksempel tildelt kilde-og destinationsområdet til objektvariabler og derefter brugt disse variabler til at kopiere data fra et område til det andet.

Vi starter med at erklære variablerne som Intervalobjekter., Derefter tildeler vi området til disse variabler ved hjælp af Sætsætningen. Når området er blevet tildelt variablen, kan du blot bruge variablen.

Indtast Data i Den næste tomme celle (ved hjælp af indtastningsboks)

Du kan bruge indtastningsfelterne til at give brugeren mulighed for at indtaste dataene.Antag for eksempel, at du har datasættet nedenfor, og du vil indtaste salgsrekorden, du kan bruge indtastningsfeltet i VBA. Ved hjælp af en kode kan vi sikre os, at den udfylder dataene i den næste tomme række.,

ovenstående kode bruger VBA-indtastningsboksen til at hente indgange fra brugeren og indtaster derefter indgangene i de specificerede celler.

Bemærk, at vi ikke brugte nøjagtige cellehenvisninger. I stedet har vi brugt ende-og Offsetegenskaben til at finde den sidste tomme celle og udfylde dataene i den.

denne kode er langt fra brugbar. Indtaster en tekststreng, når indtastningsfeltet beder om mængde eller beløb, vil du bemærke, at e .cel tillader det. Du kan bruge en If-tilstand til at kontrollere, om værdien er numerisk eller ej, og derefter tillade den i overensstemmelse hermed.,

Looping gennem celler/intervaller

indtil videre kan vi have set, hvordan man vælger, kopierer og indtaster dataene i celler og intervaller.

i dette afsnit vil vi se, hvordan man løber gennem et sæt celler/rækker / kolonner i en rækkevidde. Dette kan være nyttigt, når du vil analysere hver celle og udføre en handling baseret på den.vil fremhæve hver tredje række i markeringen, skal du gennemløbe og kontrollere for rækkenummeret., Tilsvarende, hvis du vil fremhæve alle de negative celler ved at ændre skrifttypefarven til rød, skal du gennemløbe og analysere hver celles værdi.

Her er koden, der løber gennem rækkerne i de valgte celler og fremhæver alternative rækker.

Sub HighlightAlternateRows()Dim Myrange As RangeDim Myrow As RangeSet Myrange = SelectionFor Each Myrow In Myrange.RowsIf Myrow.Row Mod 2 = 0 ThenMyrow.Interior.Color = vbCyanEnd IfNext MyrowEnd Sub

ovenstående kode bruger MOD-funktionen til at kontrollere rækkenummeret i markeringen. Hvis rækkenummeret er lige, bliver det fremhævet i cyan farve.

Her er et andet eksempel, hvor koden går gennem hver celle og fremhæver de celler, der har en negativ værdi i den.,

Sub HighlightAlternateRows()Dim Myrange As RangeDim Mycell As RangeSet Myrange = SelectionFor Each Mycell In MyrangeIf Mycell < 0 ThenMycell.Interior.Color = vbRedEnd IfNext MycellEnd Sub

Bemærk, at du kan gøre det samme ved hjælp af betinget formatering (hvilket er dynamisk og en bedre måde at gøre dette på). Dette eksempel er kun med det formål at vise dig, hvordan looping fungerer med celler og intervaller i VBA.

hvor skal VBA-koden placeres

spekulerer du på, hvor VBA-koden går i din e ?cel-projektmappe?

e .cel har en VBA backend kaldet VBA editor. Du skal kopiere og indsætte koden i VB Editor module code vinduet.

Her er trinnene til at gøre dette:

  1. gå til fanen Udvikler.,
  2. Klik på Visual Basic-indstillingen. Dette vil åbne VB editor i backend.
  3. i projektudforskningsruden i Vb-editoren skal du højreklikke på et objekt for den projektmappe, hvor du vil indsætte koden. Hvis du ikke kan se Project e .plorer, skal du gå til fanen Vis og klikke på Project e .plorer.
  4. gå til Indsæt og klik på modul. Dette vil indsætte et modul objekt til din projektmappe.
  5. Kopier og indsæt koden i modulvinduet.,

Du Kan Også godt Lide Følgende Excel-Tutorials:

  • Arbejde med Regneark ved hjælp af VBA.
  • arbejde med arbejdsbøger ved hjælp af VBA.
  • oprettelse af brugerdefinerede funktioner i E .cel.
  • til næste løkke i E .cel VBA – en Begyndervejledning med eksempler.
  • Sådan bruges e .cel VBA InStr-funktion (med praktiske eksempler).
  • Excel VBA Msgbox.
  • Sådan optages en makro i E .cel.
  • Sådan køres en makro i E .cel.
  • Sådan oprettes en tilføjelse i E .cel.,
  • E .cel Personal Macro Workorkbook | Gem & brug makroer i alle arbejdsbøger.
  • E .cel VBA Events – en nem (og komplet) Guide.
  • E .cel VBA fejlhåndtering.
  • sådan sorteres Data i E .cel ved hjælp af VBA (en trinvis vejledning).
  • 24 nyttige E .cel-Makroeksempler til VBA-begyndere (klar til brug).


Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *