Sådan optages en makro i Excel - en trinvis vejledning

Selvom du er helt ny i Excel VBA -verdenen, kan du nemt optage en makro og automatisere noget af dit arbejde.

I denne detaljerede vejledning dækker jeg alt det, du har brug for at vide for at komme i gang med at optage og bruge makroer i Excel.

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

Hvad er en makro?

Hvis du er nybegynder på VBA, lad mig først fortælle dig, hvad en makro er - jeg vil trods alt blive ved med at bruge dette udtryk i hele selvstudiet.

En makro er en kode skrevet i VBA (Visual Basic for Applications), der giver dig mulighed for at køre et stykke kode, når den udføres.

Ofte finder du, at folk (inklusive mig selv) henviser til en VBA -kode som en makro - uanset om den er genereret ved hjælp af en makrooptager eller er blevet skrevet manuelt.

Når du optager en makro, ser Excel nøje på de trin, du tager, og noterer det på et sprog, det forstår - hvilket er VBA.

Og da Excel er en rigtig god note -taker, skaber det en meget detaljeret kode (som vi vil se senere i denne vejledning).

Når du nu stopper optagelsen, gemmer makroen og kører den, går Excel simpelthen tilbage til den VBA -kode, den genererede og følger nøjagtig de samme trin.

Det betyder, at selvom du ikke ved noget om VBA, kan du automatisere nogle opgaver bare ved at lade Excel registrere dine trin én gang og derefter genbruge disse senere.

Lad os nu dykke ned og se, hvordan du optager en makro i Excel.

Få fanen Udvikler i båndet

Det første trin til at registrere en makro er at få fanen Udvikler på båndet.

Hvis du allerede kan se fanen Udvikler på båndet, skal du gå til det næste afsnit, ellers skal du følge nedenstående trin:

  • Højreklik på en af ​​de eksisterende faner på båndet, og klik på 'Tilpas båndet'. Det åbner dialogboksen Excel -indstillinger.
  • I dialogboksen Excel -indstillinger har du indstillingerne Tilpas båndet. Til højre i ruden Hovedfaner skal du kontrollere indstillingen Udvikler.
  • Klik på OK.

Ovenstående trin ville gøre fanen Udvikler tilgængelig i båndområdet.

Optagelse af en makro i Excel

Nu hvor vi har alt på plads, lad os lære at optage en makro i Excel.

Lad os optage en meget enkel makro - en, der vælger en celle og indtaster teksten 'Excel' i den. Jeg bruger teksten 'Excel', mens jeg optager denne makro, men indtast gerne dit navn eller anden tekst, du kan lide.

Her er trinene til at registrere denne makro:

  1. Klik på fanen Udvikler.
  2. I gruppen Kode skal du klikke på knappen Makro. Dette åbner dialogboksen 'Optag makro'.
  3. Indtast et navn på din makro i dialogboksen Optag makro. Jeg bruger navnet EnterText. Der er nogle navngivningsbetingelser, du skal følge, når du navngiver en makro. For eksempel kan du ikke bruge mellemrum imellem. Jeg foretrækker normalt at beholde mine makronavne som et enkelt ord, med forskellige dele med et stort første alfabet. Du kan også bruge understregning til at adskille to ord - f.eks. Enter_Text.
  4. (Valgfrit trin) Du kan tildele en tastaturgenvej, hvis du vil. I dette tilfælde vil vi bruge genvejen Control + Shift + N. Husk, at den genvej, du tildeler her, vil tilsidesætte alle eksisterende shorcuts i din projektmappe. Hvis du f.eks. Tildeler genvejen Control + S, vil du ikke kunne bruge dette til at gemme projektmappen (i stedet hver gang du bruger den, udfører den makroen).
  5. I indstillingen 'Gem makro i' skal du sørge for, at 'Denne projektmappe' er valgt. Dette trin sikrer, at makroen er en del af projektmappen. Det vil være der, når du gemmer det og åbner igen, eller endda hvis du deler det med nogen.
  6. (Valgfrit trin) Indtast en beskrivelse. Jeg gør normalt ikke dette, men hvis du er ekstremt organiseret, kan du tilføje, hvad makroen handler om.
  7. Klik på OK. Så snart du klikker på OK, begynder det at registrere dine handlinger i Excel. Du kan se knappen 'Stop optagelse' på fanen Udvikler, hvilket angiver, at makrooptagelsen er i gang.
  8. Vælg celle A2.
  9. Indtast teksten Excel (eller du kan bruge dit navn).
  10. Tryk på Enter -tasten. Dette vil vælge celle A3.
  11. Klik på knappen Stop optagelse på fanen Udvikler.

Tillykke!

Du har lige registreret din første makro i Excel. Du er ikke længere en makro jomfru.

Selvom makroen ikke gør noget nyttigt, tjener det sit formål med at forklare, hvordan en makrooptager fungerer i Excel.

Lad os nu gå videre og teste denne makro.

Følg trinene herunder for at teste makroen:

  1. Slet teksten i celle A2. Dette er for at teste, om makroen indsætter teksten i celle A2 eller ej.
  2. Vælg en celle - bortset fra A2. Dette er for at teste, om makroen vælger celle A2 eller ej.
  3. Klik på fanen Udvikler.
  4. Klik på knappen Makroer i gruppen Kode.
  5. I dialogboksen Makro skal du klikke på makronavnet - EnterText.
  6. Klik på knappen Kør.

Du vil bemærke, at så snart du klikker på knappen Kør, bliver teksten 'Excel' indsat i celle A2, og celle A3 bliver markeret.

Nu kan alt dette ske på et splitsekund, men i virkeligheden fulgte makroen - ligesom en lydig alf - de nøjagtige trin, du viste den, mens du optog makroen.

Så makroen vælger først cellen A2 og indtaster derefter teksten Excel i den, og vælger derefter cellen A3.

Bemærk: Du kan også køre makroen ved hjælp af tastaturgenvejen Control + Shift + N (hold Ctrl- og Shift -tasterne nede, og tryk derefter på N -tasten). Dette er den samme tastaturgenvej, som vi tildelte makroen, da vi optog den.

Hvad optagelse af en makro gør i backend

Lad os nu gå til Excel -backend - VB Editor - og se, hvad optagelse en makro virkelig gør.

Her er trinene til at åbne VB Editor i Excel:

  1. Klik på fanen Udvikler.
  2. Klik på knappen Visual Basic i gruppen Kode.

Eller du kan bruge tastaturgenvejen - ALT + F11 (hold ALT -tasten nede, og tryk på F11), i stedet for de to ovenstående trin. Denne genvej åbner også den samme VB Editor.

Hvis du nu ser VB Editor for første gang, skal du ikke blive overvældet.

Lad mig hurtigt gøre dig bekendt med VB Editorens anatomi.

  • Menu linje: Det er her, du har alle mulighederne i VB Editor. Betragt dette som båndet til VBA. Den indeholder kommandoer, som du kan bruge, mens du arbejder med VB Editor.
  • Værktøjslinje - Dette er ligesom værktøjslinjen Hurtig adgang i VB -editoren. Det kommer med nogle nyttige muligheder, og du kan tilføje flere muligheder til det. Dens fordel er, at en mulighed i værktøjslinjen kun er et klik væk.
  • Project Explorer -vindue - Det er her Excel viser alle projektmapper og alle objekterne i hver projektmappe. For eksempel, hvis vi har en projektmappe med 3 regneark, vises den i Project Explorer. Der er nogle ekstra objekter her, f.eks. Moduler, brugerformularer og klassemoduler.
  • Kodevindue - Det er her, VBA -koden registreres eller skrives. Der er et kodevindue for hvert objekt, der er angivet i Project Explorer - f.eks. Regneark, projektmapper, moduler osv. Vi vil se senere i denne vejledning, at den registrerede makro går ind i kodevinduet på et modul.
  • Egenskaber vindue - Du kan se egenskaberne for hvert objekt i dette vindue. Jeg bruger ofte dette vindue til at navngive objekter eller ændre de skjulte egenskaber. Du kan muligvis ikke se dette vindue, når du åbner VB -editoren. For at vise dette skal du klikke på fanen Vis og vælge Egenskaber -vindue.
  • Umiddelbart vindue - Jeg bruger ofte det umiddelbare vindue, mens jeg skriver kode. Det er nyttigt, når du vil teste nogle udsagn eller under fejlsøgning. Det er muligvis ikke synligt som standard, og du kan få det til at vises ved at klikke på fanen Vis og vælge indstillingen Umiddelbart vindue.

Da vi optog makroen - EnterText, skete følgende ting i VB Editor:

  • Et nyt modul blev indsat.
  • Der blev optaget en makro med det navn, vi specificerede - EnterText
  • Koden blev skrevet i kodevinduet på modulet.

Så hvis du dobbeltklikker på modulet (modul 1 i dette tilfælde), vises et kodevindue som vist herunder.

Her er koden, som makrooptageren og gav os:

Sub EnterText () '' EnterText Macro '' Tastaturgenvej: Ctrl+Shift+N 'Range ("A2"). Vælg ActiveCell.FormulaR1C1 = "Excel" Range ("A3"). Vælg End Sub

I VBA er enhver linje, der følger (apostroftegn) udføres ikke. Det er en kommentar, der kun er placeret til informationsformål. Hvis du fjerner de første fem linjer i denne kode, fungerer makroen stadig som forventet.

Lad mig nu hurtigt dække, hvad hver kodelinje gør:

Koden starter med Sub efterfulgt af navnet på makroen og tom parentes. Sub er en forkortelse for Subroutine. Hver underprogram (også kaldet Procedure) i VBA starter med Sub og slutter med End Sub.

  • Område ("A2"). Vælg - Denne linje vælger cellen A2.
  • ActiveCell.FormulaR1C1 = “Excel” - denne linje indtaster teksten Excel i den aktive celle. Da vi valgte A2 som det første trin, bliver det vores aktive celle.
  • Område ("A3"). Vælg - Dette vælger celle A3. Dette sker, når vi rammer Enter -tasten efter indtastning af teksten, hvis resultat var at vælge celle A3.

Jeg håber, at du nu har en grundlæggende forståelse for, hvordan du optager en makro i Excel.

Husk, at koden skrevet af en makrooptager på ingen måde er en effektiv kode.

Makrooptager tilføjer undertiden meget fnug til koden, hvilket til tider ikke er nødvendigt. Men det betyder ikke, at det ikke er nyttigt. For nogen, der lærer VBA, kan en makrooptager være en god måde at analysere, hvordan ting fungerer i VBA.

Absolut Vs relativ makrooptagelse

Du kender allerede til absolutte og relative referencer i Excel … ikke?

Hvis du ikke gør det - læs først denne vejledning om referencer.

Læs det? Lad os gå videre.

Vi vil se senere i dette afsnit om, hvordan man optager makroer i absolutte og relative referencer. Men før det, lad mig hurtigt opsummere forskellen mellem absolut og relativ reference i VBA (hvis du blev doven og ikke læste op på det link, jeg gav for et par linjer siden):

Hvis du bruger en absolut referenceindstilling til at optage en makro, vil VBA -koden altid referere til de samme celler, som du brugte. Hvis du f.eks. Vælger celle A2, skal du indtaste teksten Excel og trykke på Enter hver gang - uanset hvor du er i regnearket, og uanset hvilken celle der er valgt, ville din kode først markere celle A2, indtaste teksten Excel og derefter flytte til celle A3.

Hvis du bruger en relativ referenceindstilling til at optage en makro, ville VBA ikke hardcode cellereferencerne. Det ville snarere fokusere på bevægelsen sammenlignet med den aktive celle. Antag f.eks., At du allerede har valgt celle A1, og du begynder at optage makroen i den relative referencetilstand.

Nu vælger du celle A2, indtaster teksten Excel og trykker på enter -tasten. Når du nu kører denne makro, vil den ikke gå tilbage til celle A2, i stedet vil den flytte sig i forhold til den aktive celle. For eksempel, hvis celle K3 er markeret, vil den flytte til K4, indtaste teksten Excel og derefter endelig markere celle K5.

Lad mig nu fortælle dig, hvordan du optager en makro i relative referencetilstand:

  1. Vælg celle A1.
  2. Klik på fanen Udvikler.
  3. I gruppen Kode skal du klikke på knappen ‘Brug relative referencer’. Det bliver grønt, hvilket angiver, at det er tændt.
  4. Klik på knappen Optag makro.
  5. Indtast et navn på din makro i dialogboksen Optag makro. Jeg bruger navnet EnterTextRelRef.
  6. I indstillingen Gem makro i skal du sørge for, at 'Denne projektmappe' er valgt.
  7. Klik på OK.
  8. Vælg celle A2.
  9. Indtast teksten Excel (eller du kan indtaste dit navn).
  10. Tryk på Enter -tasten. Dette fører markøren til cellen A3.
  11. Klik på knappen Stop optagelse på fanen Udvikler.

Dette ville registrere makroen i den relative referencetilstand.

Gør nu dette.

  1. Vælg en hvilken som helst celle (bortset fra A1).
  2. Klik på fanen Udvikler.
  3. Klik på knappen Makroer i gruppen Kode.
  4. I makro -dialogboksen skal du klikke på makronavnet - EnterTextRelRef.
  5. Klik på knappen Kør.

Hvad der sker? Gik markøren tilbage til celle A3.

Det ville det ikke - fordi du har optaget makroen i den relative referencetilstand. Så markøren ville bevæge sig i forhold til den aktive celle. For eksempel, hvis du gør dette, når celle K3 er markeret, indtaster det teksten Excel er celle K4 og ender med at vælge celle K5.

Her er koden, der bliver registreret i backend (VB Editor -modulkodevindue):

Sub EnterTextRelRef () '' EnterTextRelRef Macro '' ActiveCell.Offset (1, 0) .Range ("A1"). Vælg ActiveCell.FormulaR1C1 = "Excel" ActiveCell.Offset (1, 0) .Range ("A1"). Vælg Afslut sub

Bemærk, at hele denne kode ikke refererer til cellerne K3 eller K4 nogen steder. I stedet bruger den Activecell til at referere til den valgte celle og Offset til at flytte i forhold til den aktive celle.

Du skal ikke bekymre dig om område ("A1"), som koden har. Det er en af ​​de unødvendige koder, som makrooptageren tilføjer, der ikke tjener noget formål og kan fjernes. Koden ville fungere fint uden den.

Knappen ‘Brug relativ reference’ på fanen Udvikler er en skifteknap. Du kan deaktivere den (og skifte tilbage til absolut reference) ved at klikke på den.

Hvad en makrooptager ikke kan

Makrooptager er fantastisk til at følge dig i Excel og registrere dine nøjagtige trin, men det kan mislykkes dig, når du har brug for det til at gøre mere.

  • Du kan ikke eksekvere en kode uden at vælge objektet. Hvis du vil have makrooptageren til at gå til det næste regneark og fremhæve alle de fyldte celler i kolonne A uden at forlade det aktuelle regneark, vil det ikke være i stand til at gøre dette. Det er fordi, hvis jeg beder dig om at gøre dette, kan du ikke selv gøre det (uden at forlade det aktuelle ark). Og hvis du ikke kan gøre det selv, hvordan vil makrooptageren fange dine handlinger. I sådanne tilfælde skal du manuelt gå og oprette/redigere koden.
  • Du kan ikke oprette en brugerdefineret funktion med en makrooptager. Med VBA kan du oprette brugerdefinerede funktioner, som du kan bruge i regnearket som almindelige funktioner. Du kan oprette dette ved at skrive koden manuelt.
  • Du kan ikke køre koder baseret på begivenheder: I VBA kan du bruge mange begivenheder - f.eks. At åbne en projektmappe, tilføje et regneark, dobbeltklikke på en celle osv. For at køre en kode, der er knyttet til denne begivenhed. Du kan bruge en makrooptager til at gøre dette.
  • Du kan ikke oprette sløjfer med en makrooptager. Når du indtaster koden manuelt, kan du udnytte strømmen til sløjfer i VBA (f.eks. For næste, for hver næste, gør mens, gør indtil). Men du kan ikke gøre dette, når du optager en makro.
  • Du kan ikke analysere forhold: Du kan kontrollere betingelser i koden ved hjælp af makrooptager. Hvis du skriver en VBA -kode manuelt, kan du bruge IF Then Else -sætningerne til at analysere en tilstand og køre en kode, hvis den er sand (eller en anden kode, hvis den er falsk).
  • Du kan ikke videregive argumenter i en makroprocedure: Når du optager en makro, vil den aldrig have nogen argumenter. En underrutine kan tage inputargumenter, der kan bruges inden for makroen til at udføre en opgave. Under optagelse af en makro kan dette ikke gøres, da de optagede makroer er uafhængige og ikke er forbundet til andre eksisterende makroer.

Makroaktiverede filudvidelser

Når du optager en makro, eller du manuelt skriver VBA-kode i Excel, skal du gemme filen med en makroaktiveret filudvidelse (.xlsm).

Før Excel 2007 var der et enkelt filformat, der plejede at være tilstrækkeligt - .xls.

Men fra 2007 og fremefter blev .xlsx introduceret som standard filtypenavn. Filerne, der er gemt som .xlsx, kan ikke indeholde en makro i den. Så hvis du har en fil med .xlsx-udvidelse, og du optager/skriver en makro og gemmer den, vil den advare dig om at gemme den i makroaktiveret format og vise dig en dialog (som vist herunder):

Hvis du vælger Nej, giver Excel dig mulighed for at gemme det i et makroaktiveret format. Men hvis du klikker på Ja, fjerner Excel automatisk al koden fra din projektmappe og gemmer den som en .xlsx -projektmappe.

Så hvis du har en makro i din projektmappe, skal du gemme den i .xlsm -format for at beholde denne makro.

Forskellige måder at køre en makro i Excel på

Indtil videre har vi kun set en måde at køre en makro i Excel - som bruger dialogboksen Makro.

Men der er en række måder, du kan køre makroer på.

  1. Kør en makro fra båndet (fanen Udvikler)
  2. Brug af en tastaturgenvej (som du skal tildele)
  3. Tildel makroen til en form
  4. Tildel makroen til en knap
  5. Kør en makro fra VB Editor

Konklusion - Optag en makro, når den sidder fast

Jeg har allerede nævnt, at en makrooptager er et nyttigt værktøj for alle, der arbejder med VBA i Excel.

Når du bruger makrooptageren et par gange, vil du bemærke, at den spytter en masse unødvendig kode ud. Det er dog stadig nyttigt og giver dig nogle ideer til, hvor du skal starte. For eksempel, hvis jeg beder dig om at filtrere en cellesøjle ved hjælp af VBA, og du ikke aner, hvad syntaksen er, kan du hurtigt optage en makro og tjekke koden.

En makrooptager er et uundværligt værktøj, og selv efter mange års erfaring med VBA -kodning under mit bælte, griber jeg ofte til makrooptageren for at få hjælp.

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave