Hvordan spille inn en makro i Excel - en trinnvis veiledning

Selv om du er en helt nybegynner i Excel VBA -verdenen, kan du enkelt spille inn en makro og automatisere noe av arbeidet ditt.

I denne detaljerte guiden vil jeg dekke alt du trenger å vite for å komme i gang med innspilling og bruk av makroer i Excel.

Hvis du er interessert i å lære VBA på den enkle måten, sjekk min Online Excel VBA -opplæring.

Hva er en makro?

Hvis du er nybegynner i VBA, la meg først fortelle deg hva en makro er - tross alt vil jeg fortsette å bruke dette begrepet i hele opplæringen.

En makro er en kode skrevet i VBA (Visual Basic for Applications) som lar deg kjøre en del av koden når den kjøres.

Ofte vil du finne at folk (inkludert meg selv) omtaler en VBA -kode som en makro - enten den er generert ved bruk av en makroopptaker eller er skrevet manuelt.

Når du spiller inn en makro, ser Excel nøye på trinnene du tar, og noterer det på et språk det forstår - som er VBA.

Og siden Excel er en veldig god notatskriver, lager den en veldig detaljert kode (som vi vil se senere i denne opplæringen).

Når du stopper opptaket, lagrer makroen og kjører den, går Excel ganske enkelt tilbake til VBA -koden den genererte og følger nøyaktig de samme trinnene.

Dette betyr at selv om du ikke vet noe om VBA, kan du automatisere noen oppgaver bare ved å la Excel registrere trinnene dine en gang og deretter bruke dem på nytt senere.

La oss nå dykke ned og se hvordan du spiller inn en makro i Excel.

Få utviklerfanen i båndet

Det første trinnet for å spille inn en makro er å få Utvikler -fanen på båndet.

Hvis du allerede kan se utviklerfanen på båndet, går du til neste seksjon, ellers følger du trinnene nedenfor:

  • Høyreklikk på en av de eksisterende fanene på båndet og klikk på alternativet "Tilpass båndet". Det vil åpne dialogboksen Alternativer for Excel.
  • I dialogboksen Alternativer for Excel har du alternativene Tilpass båndet. Til høyre i ruten Hovedfaner, sjekk alternativet Utvikler.
  • Klikk OK.

Trinnene ovenfor vil gjøre Utvikler -fanen tilgjengelig i båndområdet.

Ta opp en makro i Excel

Nå som vi har alt på plass, la oss lære å spille inn en makro i Excel.

La oss spille inn en veldig enkel makro - en som velger en celle og skriver inn teksten ‘Excel’ i den. Jeg bruker teksten ‘Excel’ mens jeg spiller inn denne makroen, men skriv gjerne inn navnet ditt eller annen tekst du liker.

Her er trinnene for å spille inn denne makroen:

  1. Klikk på Utvikler -fanen.
  2. Klikk på Makro -knappen i kodegruppen. Dette åpner dialogboksen "Ta opp makro".
  3. Skriv inn et navn på makroen i dialogboksen Ta opp makro. Jeg bruker navnet EnterText. Det er noen navngivningsbetingelser du må følge når du navngir en makro. For eksempel kan du ikke bruke mellomrom mellom. Jeg foretrekker vanligvis å beholde makronavnene mine som et enkelt ord, med forskjellige deler med et stort første alfabet. Du kan også bruke understreking til å skille to ord - for eksempel Enter_Text.
  4. (Valgfritt trinn) Du kan tilordne en hurtigtast hvis du vil. I dette tilfellet vil vi bruke snarveien Control + Shift + N. Husk at snarveien du tilordner her vil overstyre alle eksisterende snarveier i arbeidsboken din. For eksempel, hvis du tilordner snarveien Control + S, vil du ikke kunne bruke denne til å lagre arbeidsboken (i stedet hver gang du bruker den, vil den utføre makroen).
  5. I alternativet "Lagre makro i" må du kontrollere at "Denne arbeidsboken" er valgt. Dette trinnet sikrer at makroen er en del av arbeidsboken. Det vil være der når du lagrer det og åpner det igjen, eller selv om du deler det med noen.
  6. (Valgfritt trinn) Skriv inn en beskrivelse. Jeg gjør vanligvis ikke dette, men hvis du er ekstremt organisert, vil du kanskje legge til hva makroen handler om.
  7. Klikk OK. Så snart du klikker OK, begynner det å registrere handlingene dine i Excel. Du kan se "Stopp innspilling" -knappen i kategorien Utvikler, som indikerer at makroopptaket pågår.
  8. Velg celle A2.
  9. Skriv inn teksten utmerke (eller du kan bruke navnet ditt).
  10. Trykk Enter. Dette vil velge celle A3.
  11. Klikk på Stopp innspilling -knappen Utvikler -fanen.

Gratulerer!

Du har nettopp spilt inn din første makro i Excel. Du er ikke lenger en makrojomfru.

Selv om makroen ikke gjør noe nyttig, vil den tjene sin hensikt med å forklare hvordan en makroopptaker fungerer i Excel.

La oss nå gå videre og teste denne makroen.

Følg trinnene nedenfor for å teste makroen:

  1. Slett teksten i celle A2. Dette er for å teste om makroen setter inn teksten i celle A2 eller ikke.
  2. Velg hvilken som helst celle - annet enn A2. Dette er for å teste om makroen velger celle A2 eller ikke.
  3. Klikk på Utvikler -fanen.
  4. Klikk på Makro -knappen i kodegruppen.
  5. I makro -dialogboksen klikker du på makronavnet - EnterText.
  6. Klikk på Kjør -knappen.

Du vil legge merke til at så snart du klikker på Kjør -knappen, blir teksten ‘Excel’ satt inn i celle A2 og celle A3 blir valgt.

Nå kan alt dette skje på et splitsekund, men i virkeligheten fulgte makroen - akkurat som en lydig alv - de nøyaktige trinnene du viste den mens du spilte inn makroen.

Så makroen velger først cellen A2, og skriver deretter inn teksten utmerke i den, og velger deretter cellen A3.

Merk: Du kan også kjøre makroen ved hjelp av hurtigtasten Kontroll + Skift + N (hold inne Ctrl- og Shift -tastene, og trykk deretter N -tasten). Dette er den samme hurtigtasten som vi tildelte makroen da vi spilte den inn.

Hva innspilling av en makro gjør i backend

La oss gå til Excel -backend - VB Editor - og se hva opptak en makro virkelig gjør.

Her er trinnene for å åpne VB Editor i Excel:

  1. Klikk på Utvikler -fanen.
  2. Klikk på Visual Basic -knappen i kodegruppen.

Eller du kan bruke hurtigtasten - ALT + F11 (hold inne ALT -tasten og trykk F11), i stedet for de to trinnene ovenfor. Denne snarveien åpner også den samme VB -redigereren.

Hvis du ser VB Editor for første gang, ikke bli overveldet.

La meg raskt gjøre deg kjent med VB Editor's anatomi.

  • Menyfelt: Det er her du har alle alternativene til VB Editor. Se på dette som båndet til VBA. Den inneholder kommandoer som du kan bruke mens du arbeider med VB Editor.
  • Verktøylinje - Dette er som verktøylinjen for hurtig tilgang i VB -redaktøren. Den kommer med noen nyttige alternativer, og du kan legge til flere alternativer til den. Fordelen er at et alternativ på verktøylinjen er bare et klikk unna.
  • Project Explorer -vindu - Det er her Excel viser alle arbeidsbøkene og alle objektene i hver arbeidsbok. For eksempel, hvis vi har en arbeidsbok med tre regneark, vises den i Project Explorer. Det er noen ekstra objekter her, for eksempel moduler, brukerskjemaer og klassemoduler.
  • Kodevindu - Det er her VBA -koden blir spilt inn eller skrevet. Det er et kodevindu for hvert objekt som er oppført i Project Explorer - for eksempel regneark, arbeidsbøker, moduler, etc. Vi vil se senere i denne opplæringen at den innspilte makroen går inn i kodevinduet til en modul.
  • Egenskaper -vinduet - Du kan se egenskapene til hvert objekt i dette vinduet. Jeg bruker ofte dette vinduet til å navngi objekter eller endre de skjulte egenskapene. Du ser kanskje ikke dette vinduet når du åpner VB -redigeringsprogrammet. For å vise dette, klikk på fanen Vis og velg Egenskapsvindu.
  • Umiddelbart vindu - Jeg bruker ofte det umiddelbare vinduet mens jeg skriver kode. Det er nyttig når du vil teste noen utsagn eller mens du feilsøker. Det er kanskje ikke synlig som standard, og du kan få det til å vises ved å klikke på kategorien Vis og velge alternativet Umiddelbart vindu.

Da vi spilte inn makroen - EnterText, skjedde følgende ting i VB Editor:

  • En ny modul ble satt inn.
  • En makro ble spilt inn med navnet vi spesifiserte - EnterText
  • Koden ble skrevet i kodevinduet til modulen.

Så hvis du dobbeltklikker på modulen (modul 1 i dette tilfellet), vises et kodevindu som vist nedenfor.

Her er koden som makroopptakeren og ga oss:

Sub EnterText () '' EnterText Macro '' Tastaturgenvei: Ctrl+Shift+N 'Range ("A2"). Velg ActiveCell.FormulaR1C1 = "Excel" Range ("A3"). Velg End Sub

I VBA, enhver linje som følger (apostroftegn) utføres ikke. Det er en kommentar som bare er lagt til informasjonsformål. Hvis du fjerner de fem første linjene i denne koden, fungerer makroen fortsatt som forventet.

La meg nå raskt dekke hva hver kodelinje gjør:

Koden starter med Sub etterfulgt av navnet på makroen og tom parentes. Sub er en forkortelse for Subroutine. Hver subrutine (også kalt Prosedyre) i VBA starter med Sub og slutter med End Sub.

  • Område ("A2"). Velg - Denne linjen velger cellen A2.
  • ActiveCell.FormulaR1C1 = “Excel” - denne linjen angir teksten Excel i den aktive cellen. Siden vi valgte A2 som det første trinnet, blir det vår aktive celle.
  • Område ("A3"). Velg - Dette velger celle A3. Dette skjer når vi trykker på Enter -tasten etter at vi har skrevet inn teksten. Resultatet var å velge celle A3.

Jeg håper du nå har en grunnleggende forståelse av hvordan du spiller inn en makro i Excel.

Husk at koden skrevet av en makroopptaker på ingen måte er en effektiv kode.

Makroopptaker legger noen ganger til mye lo i koden, noe som til tider ikke er nødvendig. Men dette betyr ikke at det ikke er nyttig. For noen som lærer VBA, kan en makroopptaker være en fin måte å analysere hvordan ting fungerer i VBA.

Absolutt mot relativ makroopptak

Du vet allerede om absolutte og relative referanser i Excel … ikke sant?

Hvis du ikke gjør det - les denne opplæringen om referanser først.

Lese det? La oss gå videre.

Vi vil se senere i denne delen om hvordan du registrerer makroer i absolutte og relative referanser. Men før det, la meg raskt oppsummere forskjellen mellom absolutt og relativ referanse i VBA (i tilfelle du ble lat og ikke leste deg opp på lenken jeg ga for noen linjer siden):

Hvis du bruker et absolutt referansealternativ for å spille inn en makro, vil VBA -koden alltid referere til de samme cellene som du brukte. For eksempel, hvis du velger celle A2, skriver du inn teksten Excel og trykker Enter hver gang - uansett hvor du er i regnearket og uansett hvilken celle som er valgt, vil koden først velge celle A2, skrive inn teksten Excel og flytt deretter til celle A3.

Hvis du bruker et relativt referansealternativ for å spille inn en makro, ville VBA ikke hardkoden cellereferansene. Den ville heller fokusere på bevegelsen sammenlignet med den aktive cellen. Anta for eksempel at du allerede har valgt celle A1, og at du begynner å spille inn makroen i den relative referansemodusen.

Nå velger du celle A2, skriver inn teksten Excel og trykker på enter -tasten. Når du kjører denne makroen, vil den ikke gå tilbake til celle A2, i stedet vil den bevege seg i forhold til den aktive cellen. For eksempel, hvis celle K3 er valgt, vil den flytte til K4, skrive inn teksten Excel, og deretter velge celle K5.

La meg nå fortelle deg hvordan du spiller inn en makro i relative referansemodus:

  1. Velg celle A1.
  2. Klikk på Utvikler -fanen.
  3. Klikk på knappen "Bruk relative referanser" i kodegruppen. Den blir grønn, og indikerer at den er slått på.
  4. Klikk på Record Macro -knappen.
  5. Skriv inn et navn på makroen i dialogboksen Ta opp makro. Jeg bruker navnet EnterTextRelRef.
  6. I alternativet Lagre makro i, må du kontrollere at 'Denne arbeidsboken' er valgt.
  7. Klikk OK.
  8. Velg celle A2.
  9. Skriv inn teksten utmerke (eller du kan skrive inn navnet ditt).
  10. Trykk Enter. Dette tar markøren til cellen A3.
  11. Klikk på Stopp innspilling -knappen Utvikler -fanen.

Dette ville registrere makroen i den relative referansemodusen.

Gjør dette nå.

  1. Velg en celle (bortsett fra A1).
  2. Klikk på Utvikler -fanen.
  3. Klikk på Makro -knappen i kodegruppen.
  4. I makro -dialogboksen klikker du på makronavnet - EnterTextRelRef.
  5. Klikk på Kjør -knappen.

Hva skjer? Gikk markøren tilbake til celle A3.

Det ville ikke - fordi du har spilt inn makroen i den relative referansemodusen. Så markøren ville bevege seg i forhold til den aktive cellen. For eksempel, hvis du gjør dette når celle K3 er valgt, vil det skrive inn teksten Excel er celle K4 og ende opp med å velge celle K5.

Her er koden som blir registrert i backend (VB Editor -modulkodevinduet):

Sub EnterTextRelRef () '' EnterTextRelRef Macro '' ActiveCell.Offset (1, 0) .Range ("A1"). Velg ActiveCell.FormulaR1C1 = "Excel" ActiveCell.Offset (1, 0) .Range ("A1"). Velg End Sub

Vær oppmerksom på at hele koden ikke refererer til cellene K3 eller K4 noe sted. I stedet bruker den Activecell for å referere til den valgte cellen og Forskyvning for å flytte i forhold til den aktive cellen.

Ikke bekymre deg for området ("A1") som koden har. Det er en av de unødvendige kodene som makroopptakeren legger til som ikke tjener noe formål og kan fjernes. Koden ville fungere helt fint uten den.

"Bruk relativ referanse" -knappen i Utvikler -fanen er en veksleknapp. Du kan slå den av (og bytte tilbake til absolutt referanse) ved å klikke på den.

Hva en makroopptaker ikke kan gjøre

Makroopptaker er god til å følge deg i Excel og registrere de nøyaktige trinnene dine, men det kan mislykkes når du trenger det for å gjøre mer.

  • Du kan ikke utføre en kode uten å velge objektet. Hvis du vil at makroopptakeren skal gå til neste regneark og markere alle de fylte cellene i kolonne A, uten å forlate det nåværende regnearket, vil den ikke kunne gjøre dette. Det er fordi hvis jeg ber deg om å gjøre dette, vil du ikke engang kunne gjøre det (uten å forlate det nåværende arket). Og hvis du ikke kan gjøre det selv, hvordan vil makroopptakeren fange opp handlingene dine. I slike tilfeller må du gå manuelt og opprette/redigere koden.
  • Du kan ikke opprette en egendefinert funksjon med en makroopptaker. Med VBA kan du opprette egendefinerte funksjoner som du kan bruke i regnearket som vanlige funksjoner. Du kan lage dette ved å skrive koden manuelt.
  • Du kan ikke kjøre koder basert på hendelser: I VBA kan du bruke mange hendelser - for eksempel å åpne en arbeidsbok, legge til et regneark, dobbeltklikke på en celle osv. For å kjøre en kode som er knyttet til den hendelsen. Du kan bruke en makroopptaker til å gjøre dette.
  • Du kan ikke opprette sløyfer med en makroopptaker. Når du skriver inn koden manuelt, kan du dra nytte av strømmen til sløyfer i VBA (for eksempel For neste, For hver neste, Gjør mens, Gjør til). Men du kan ikke gjøre dette når du spiller inn en makro.
  • Du kan ikke analysere forholdene: Du kan se etter forhold i koden ved å bruke makroopptaker. Hvis du skriver en VBA -kode manuelt, kan du bruke IF Then Else -setningene til å analysere en tilstand og kjøre en kode hvis den er sann (eller en annen kode hvis den er usann).
  • Du kan ikke sende argumenter i en makroprosedyre: Når du spiller inn en makro, vil den aldri ha noen argumenter. En underrutine kan ta input -argumenter som kan brukes i makroen for å utføre en oppgave. Når du spiller inn en makro, kan dette ikke gjøres ettersom de innspilte makroene er uavhengige og ikke er koblet til andre eksisterende makroer.

Makroaktiverte filutvidelser

Når du spiller inn en makro, eller du skriver VBA-kode manuelt i Excel, må du lagre filen med en makroaktivert filtillegg (.xlsm).

Før Excel 2007 var det ett enkelt filformat som pleide å være tilstrekkelig - .xls.

Men fra 2007 og utover ble .xlsx introdusert som standard filtillegg. Filene som er lagret som .xlsx kan ikke inneholde en makro i den. Så hvis du har en fil med .xlsx-utvidelse og du tar opp/skriver en makro og lagrer den, vil den advare deg om å lagre den i makroaktivt format, og vise deg en dialog (som vist nedenfor):

Hvis du velger Nei, lar Excel deg lagre det i et makroaktivt format. Men hvis du klikker Ja, vil Excel automatisk fjerne all koden fra arbeidsboken og lagre den som en .xlsx -arbeidsbok.

Så hvis du har en makro i arbeidsboken din, må du lagre den i .xlsm -formatet for å beholde makroen.

Ulike måter å kjøre en makro i Excel

Så langt har vi bare sett en måte å kjøre en makro i Excel - som bruker dialogboksen Makro.

Men det er en rekke måter du kan kjøre makroer på.

  1. Kjør en makro fra båndet (kategorien utvikler)
  2. Bruke en hurtigtast (som du må tildele)
  3. Tilordne makroen til en form
  4. Tilordne makroen til en knapp
  5. Kjør en makro fra VB Editor

Konklusjon - Spill inn en makro når den sitter fast

Jeg har allerede nevnt at en makroopptaker er et nyttig verktøy for alle som jobber med VBA i Excel.

Når du bruker makroopptakeren noen ganger, vil du legge merke til at den spytter ut mye unødvendig kode. Det er imidlertid fortsatt nyttig og gir deg noen ideer om hvor du skal begynne. For eksempel, hvis jeg ber deg filtrere en kolonne med celler ved hjelp av VBA, og du ikke aner hva syntaksen er, kan du raskt spille inn en makro og sjekke koden.

En makroopptaker er et uunnværlig verktøy, og selv etter mange års erfaring med VBA -koding under beltet, tyr jeg ofte til makroopptakeren for å få hjelp.

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave