Innholdsfortegnelse
Denne opplæringen vil sette deg på vei til å lære Excel-makroer. Du vil finne hvordan du registrerer en makro og setter inn VBA-kode i Excel, kopierer makroer fra en arbeidsbok til en annen, aktiverer og deaktiverer dem, viser koden, gjør endringer og mye mer.
For Excel-nybegynnere, konseptet med makroer ser ofte uoverkommelig ut. Det kan faktisk ta måneder eller til og med år med trening å mestre VBA. Dette betyr imidlertid ikke at du ikke kan dra nytte av automatiseringskraften til Excel-makroer med en gang. Selv om du er en nybegynner innen VBA-programmering, kan du enkelt ta opp en makro for å automatisere noen av de repeterende oppgavene dine.
Denne artikkelen peker på den fascinerende verdenen av Excel-makroer. Den dekker det grunnleggende grunnleggende du trenger å vite for å komme i gang og gir lenker til de relaterte dybdeveiledningene.
Hva er makroer i Excel?
Excel-makro er et sett med kommandoer eller instruksjoner lagret i en arbeidsbok i form av VBA-kode. Du kan tenke på det som et lite program for å utføre en forhåndsdefinert sekvens av handlinger. Når makroer er opprettet, kan de brukes på nytt når som helst. Å kjøre en makro utfører kommandoene den inneholder.
Vanligvis brukes makroer til å automatisere repeterende oppgaver og daglige rutiner. Dyktige VBA-utviklere kan skrive virkelig sofistikerte makroer som går langt utover å redusere antall tastetrykk.
Ganske ofte kan du høre folk som refererer til en "makro"følg disse trinnene:
- Åpne arbeidsboken du vil importere makroer til.
- Åpne Visual Basic Editor.
- I Project Explorer, høyreklikk prosjektnavnet og velg Importer fil .
- Naviger til .bas-filen og klikk Åpne .
Eksempler på Excel-makro
En av de beste måtene å lære Excel VBA på er ved å utforske kodeeksempler. Nedenfor finner du eksempler på veldig enkle VBA-koder som automatiserer noen grunnleggende operasjoner. Selvfølgelig vil disse eksemplene ikke lære deg koding, for dette finnes det hundrevis av profesjonelle VBA-opplæringer. Vi tar bare sikte på å illustrere noen vanlige trekk ved VBA som forhåpentligvis vil gjøre filosofien litt mer kjent for deg.
Vis alle ark i en arbeidsbok
I dette eksemplet bruker vi ActiveWorkbook -objekt for å returnere den aktive arbeidsboken og For Every -løkken for å gå gjennom alle arkene i arbeidsboken én etter én. For hvert funnet ark setter vi egenskapen Visible til xlSheetVisible .
Sub Unhide_All_Sheets() Dim wks As Worksheet For Every wks In ActiveWorkbook.Worksheets wks.Visible = xlSheetVisible Next wks End SubSkjul aktivt regneark eller gjør det veldig skjult
For å manipulere det aktive arket, bruk ActiveSheet -objektet. Denne eksempelmakroen endrer egenskapen Visible til det aktive arket til xlSheetHidden for å skjule det. Tilgjør arket veldig skjult, sett egenskapen Visible til xlSheetVeryHidden .
Sub Hide_Active_Sheet() ActiveSheet.Visible = xlSheetHidden End SubUtfletter alle sammenslåtte celler i valgt område
Hvis du vil utføre visse operasjoner på et område i stedet for hele regnearket, bruk Selection -objektet. For eksempel vil koden nedenfor oppheve sammenslåingen av alle de sammenslåtte cellene i et valgt område med ett slag.
Sub Unmerge_Cells() Selection.Cells.UnMerge End SubVis en meldingsboks
For å vise noen meldinger til brukerne dine, bruk MsgBox -funksjonen. Her er et eksempel på en slik makro i sin enkleste form:
Sub Show_Message() MsgBox ( "Hello World!" ) End SubI virkelige makroer brukes en meldingsboks vanligvis til informasjon eller bekreftelsesformål. For eksempel, før du utfører en handling (opphever sammenslåing av celler i vårt tilfelle), viser du en Ja/Nei meldingsboks. Hvis brukeren klikker "Ja", blir de valgte cellene opphevet.
Sub Unmerge_Selected_Cells() Dim Answer As String Answer = MsgBox( "Er du sikker på at du vil oppheve sammenslåingen av disse cellene?" , vbQuestion + vbYesNo, "Unmerge Cells" ) If Answer = vbYes Then Selection.Cells.UnMerge End If End SubFor å teste koden, velg ett eller flere område som inneholder sammenslåtte celler og kjør makroen. Følgende melding vises:
Nedenfor er lenkene til mer komplekse makroer som automatiserer utfordrende og tid-tidkrevende oppgaver:
- Makro for å kopiere ark fra flere arbeidsbøker til én
- Makroer for å duplisere ark i Excel
- Makroer for å alfabetisere faner i Excel
- Makro for å oppheve beskyttelse av ark uten passord
- Makro for å telle og summere betinget fargede celler
- Makro for å konvertere tall til ord
- Makro for å skjule alle regneark bortsett fra aktivt ark
- Makroer for å vise ark
- Makro for å vise alle kolonner
- Makroer for å gjøre ark veldig skjult
- Makro for å fjerne alle linjeskift i et aktivt ark
- Makroer for å slette tomme rader
- Makro for å slette annenhver rad
- Makro for å fjerne tomme kolonner
- Makro for å sette inn annenhver kolonne
- Makroer til stavekontroll i Excel
- Makro for å transponere kolonner til rader
- Makro for å snu kolonner i Excel
- Makroer for å angi utskriftsområde
- Makroer for å sette inn sideskift
Hvordan beskytte Excel-makroer
Hvis du vil forhindre at makroen din blir sett, endret eller utført av andre, du kan beskytte den med passord.
Lås makro for visning
For å beskytte VBA-kodene dine mot uautorisert visning og redigering, gjør følgende:
- Åpne VBA Editor.
- I prosjektutforskeren høyreklikker du prosjektet du vil låse, og velger VBAProject Properties...
- I Project Properties i dialogboksen Beskyttelse , merk av for Låsprosjekt for visning -boksen, skriv inn passordet to ganger og klikk OK .
- Lagre, lukk og åpne Excel-filen på nytt.
Når du prøver å se koden i Visual Basic-editoren, vil følgende dialogboks vises. Skriv inn passordet og klikk OK.
For å låse opp makroer åpner du bare dialogboksen Prosjektegenskaper igjen og fjerner en hake fra boksen Lås prosjekt for visning .
Merk. Denne metoden beskytter koden fra visning og redigering, men forhindrer ikke at den kjøres.
Passordbeskyttet makro fra å kjøre
For å beskytte makroen din fra å bli utført slik at bare brukerne som kjenner passordet kan kjøre den, legg til følgende kode, og bytt ut ordet "passord" med det virkelige passordet ditt :
Sub Password_Protect() Dim passord Som variantpassord = Application.InputBox( "Vennligst skriv inn passord" , "Passordbeskyttet makro") Velg sakspassord Case Is = False 'do nothing Case Is = "passord" 'koden din her Case Else MsgBox "Feil passord" End Select End SubMakroen bruker InputBox -funksjonen til å be brukeren om å angi passord:
Hvis brukerens inndata samsvarer med det hardkodede passordet, koden din kjøres. Hvis passordet ikke stemmer, vises meldingsboksen "Feil passord". For å forhindre at brukeren ser passordet i Visual Basic Editor, husk å låsemakro for visning som forklart ovenfor.
Merk. Gitt antallet forskjellige passordknekkere tilgjengelig på nettet, er det viktig å innse at denne beskyttelsen ikke er absolutt. Du kan heller betrakte det som en beskyttelse mot utilsiktet bruk.
Excel-makrotips
Excel VBA-proffer har utviklet tonnevis av geniale triks for å gjøre makroene deres mer effektive. Nedenfor vil jeg dele et par av favorittene mine.
Hvis VBA-koden din aktivt manipulerer celleinnholdet, kan du fremskynde kjøringen ved å slå av skjermoppdatering og omberegning av formel. Etter å ha utført koden, slå denne på igjen.
Følgende linjer skal legges til i begynnelsen av koden din (etter linjene som starter med Dim eller etter Sub linje):
Application.ScreenUpdating = False Application.Calculation = xlCalculationManualFølgende linjer skal legges til på slutten av koden (før End Sub ):
Application.ScreenUpdating = Ekte Application.Calculation = xlCalculationAutomaticHvordan dele opp VBA-kode i flere linjer
Når du skriver kode i VBA-editoren, kan du til tider lage veldig lange utsagn, så du må rulle horisontalt for å se slutten av linjen. Dette påvirker ikke kjøringen av koden, men gjør det vanskelig å undersøke koden.
For å dele en lang setning i flere linjer, skriv inn et mellomrom etterfulgt av et understrek (_) på punktet du vil bryte linjen. I VBA kalles dette linjefortsettelsestegnet .
For å fortsette koden på neste linje riktig, følg disse reglene:
- Ikke del koden i midten av argumentnavn.
- Ikke bruk understrek for å bryte kommentarer. For kommentarer med flere linjer, skriv inn en apostrof (') på begynnelsen av hver linje.
- Et understrek må være det siste tegnet på en linje, ikke etterfulgt av noe annet.
Følgende kodeeksempel viser hvordan du deler setningen i to linjer:
Answer = MsgBox( "Er du sikker på at du vil oppheve sammenslåingen av disse cellene?" , _ vbQuestion + vbYesNo, "Unmerge Cells" )Hvordan gjør en makro tilgjengelig fra en hvilken som helst arbeidsbok
Når du skriver eller registrerer en makro i Excel, kan den vanligvis bare nås fra den spesifikke arbeidsboken. Hvis du vil gjenbruke den samme koden i andre arbeidsbøker, lagrer du den i den personlige makroarbeidsboken. Dette vil gjøre makroen tilgjengelig for deg når du åpner Excel.
Den eneste hindringen er at den personlige makroarbeidsboken ikke finnes i Excel som standard. For å lage den, må du spille inn minst én makro. Følgende veiledning gir alle detaljene: Personlig makroarbeidsbok i Excel
Hvordan angre en makrohandling
Etter å ha utført en makro kan ikke handlingen tilbakestilles ved å trykke Ctrl + Z eller ved å klikke på Angre -knapp.
Erfarne VBA-programmerere kan selvfølgelig validere inngangsverdiene og/eller startbetingelsene før de lar makroen gjøre endringer i et regneark, men i de fleste tilfeller er det ganske komplisert.
En enklere måte er å lagre den aktive arbeidsboken fra makroens kode. For å gjøre dette, legg til linjen nedenfor før du lar makroen gjøre noe annet:
ActiveWorkbook.SaveDu kan også vise en meldingsboks som informerer brukeren om at gjeldende arbeidsbok ble lagret rett før du kjører hovedkoden til makroen.
På denne måten, hvis du (eller brukerne dine) ikke er fornøyd med resultatene, kan du ganske enkelt lukke og åpne arbeidsboken på nytt.
Stopp Excel fra å vise en sikkerhetsadvarsel når det ikke er makroer i en arbeidsbok
Har du noen gang havnet i en situasjon der Excel kontinuerlig spør om du vil aktivere makroer mens du definitivt vet at det ikke er noen makroer i akkurat denne arbeidsboken?
Den mest sannsynlige årsaken er at noe VBA-kode ble lagt til og deretter fjernet, og etterlot en tom modul, som utløser sikkerhetsvarselet. For å bli kvitt den, slett modulen, lagre arbeidsboken, lukk og åpne den på nytt. Hvis dette ikke hjelper, gjør følgende:
- For ThisWorkbook og for hvert enkelt ark, åpne kodevinduet, trykk Ctrl + A for å velge all koden og slette den (selv om kodevinduet ser uttom).
- Slett eventuelle brukerskjemaer og klassemoduler som arbeidsboken inneholder.
Det er slik du oppretter og bruker VBA-makroer i Excel. Jeg takker for at du leser og håper å se deg igjen på bloggen vår neste uke!
som "VBA". Teknisk sett er det en forskjell: en makro er et stykke kode mens Visual Basic for Applications (VBA) er programmeringsspråket laget av Microsoft for å skrive makroer.Hvorfor bruke Excel-makroer?
Hovedformålet med makroer er å få gjort mer arbeid på kortere tid. Som du bruker formler for å knuse tall og manipulere tekststrenger, kan du bruke makroer til å utføre hyppige oppgaver automatisk.
La oss si at du skal lage en ukentlig rapport for veilederen din. For dette importerer du ulike analysedata fra et par eller flere eksterne ressurser. Problemet er at disse dataene er rotete, overflødige eller ikke i formatet som Excel kan forstå. Det betyr at du må omformatere datoer og tall, trimme ekstra mellomrom og slette blanke, kopiere og lime inn informasjon i passende kolonner, bygge diagrammer for å visualisere trender og gjøre mye mer forskjellige ting for å gjøre rapporten klar og brukervennlig. Nå kan du forestille deg at alle disse operasjonene kan utføres for deg umiddelbart med et museklikk!
Selvfølgelig tar det tid å bygge en kompleks makro. Noen ganger kan det ta enda mer tid enn å utføre de samme manipulasjonene manuelt. Men å lage en makro er et engangsoppsett. Når den er skrevet, feilsøkt og testet, vil VBA-kode gjøre jobben raskt og feilfritt, og minimere menneskelige feil og kostbare feil.
Hvordan lage en makro i Excel
Det er to måter å lagemakroer i Excel - ved å bruke Macro Recorder og Visual Basic Editor.
Tips. I Excel gjøres de fleste operasjoner med makroer via kategorien Utvikler , så pass på å legge til Utvikler-fanen i Excel-båndet.
Opptak av en makro
Selv om du ikke kan noe om programmering generelt og VBA spesielt, kan du enkelt automatisere noe av arbeidet ditt bare ved å la Excel registrere handlingene dine som en makro. Mens du utfører trinnene, følger Excel nøye med og skriver ned museklikkene og tastetrykkene dine på VBA-språket.
Makroopptakeren fanger opp nesten alt du gjør og produserer en svært detaljert (ofte overflødig) kode. Etter at du har stoppet opptaket og lagret makroen, kan du se koden i Visual Basic Editor og gjøre små endringer. Når du kjører makroen, går Excel tilbake til den registrerte VBA-koden og utfører nøyaktig samme trekk.
For å starte opptaket, klikk på Record Macro -knappen på enten Utvikler eller Status -linjen.
For detaljert informasjon, se Hvordan ta opp makro i Excel.
Skrive en makro i Visual Basic Editor
Visual Basic for Applications (VBA) Editor er stedet der Microsoft Excel oppbevarer koden for alle makroer, både registrert og skrevet manuelt.
I VBA Editor , kan du ikke bare programmere en sekvens av handlinger, men også lage tilpassedefunksjoner, vis dine egne dialogbokser, evaluer ulike forhold, og viktigst av alt kode logikken! Naturligvis krever det å lage din egen makro litt kunnskap om strukturen og syntaksen til VBA-språket, noe som ligger utenfor denne veiledningen for nybegynnere. Men det er ingenting som hindrer deg i å gjenbruke andres kode (f.eks. den du har funnet på bloggen vår :) og selv en nybegynner i Excel VBA bør ikke ha noen problemer med det!
For det første, trykk Alt + F11 for å åpne Visual Basic Editor. Sett deretter inn koden i disse to raske trinnene:
- I prosjektutforskeren til venstre, høyreklikk målarbeidsboken, og klikk deretter Sett inn > Modul .
- I kodevinduet til høyre limer du inn VBA-koden.
Når du er ferdig, trykker du på F5 for å kjøre makroen.
For detaljerte trinn, se Hvordan sette inn VBA-kode i Excel.
Hvordan kjøre makroer i Excel
Det er flere måter å starte en makro på i Excel:
- For å kjøre en makro fra et regneark, klikk Makroer -knappen på Utvikler -fanen eller trykk Alt + F8-snarveien.
- For å kjøre en makro fra VBA Editor, trykk enten:
- F5 for å kjøre hele koden.
- F8 for å gå gjennom koden linje for linje. Dette er veldig nyttig for testing og feilsøking.
I tillegg kan du starte en makro ved å klikke på en egendefinert knapp ellerved å trykke på den tilordnede snarveien. For fullstendige detaljer, se Hvordan kjøre makroer i Excel.
Hvordan aktivere makroer i Excel
På grunn av sikkerhetsårsaker er alle makroer i Excel deaktivert som standard. Så for å bruke magien til VBA-koder til din fordel, må du vite hvordan du aktiverer dem.
Den enkleste måten å slå på makroer for en spesifikk arbeidsbok er å klikke Aktiver innhold -knappen i den gule sikkerhetsadvarselslinjen som vises øverst på arket når du åpner en arbeidsbok med makroer for første gang.
For å lære mer om makrosikkerhet, se hvordan for å aktivere og deaktivere makroer i Excel.
Hvordan endre makroinnstillinger
Microsoft Excel bestemmer om VBA-koder skal tillates eller ikke kjøres i arbeidsbøkene dine basert på makroinnstillingen valgt i Tillitssenter .
Her er trinnene for å få tilgang til Excel-makroinnstillingene og endre dem om nødvendig:
- Gå til Fil -fanen og velg Alternativer .
- I ruten til venstre velger du Tillitssenter , og klikker deretter Tillitssenterinnstillinger... .
- I dialogboksen Tillitssenter klikker du Makroinnstillinger til venstre, velger ønsket alternativ og klikker OK .
I skjermbildet nedenfor er standard makroinnstilling valgt:
For mer informasjon, se Excel-makroinnstillinger forklart.
Hvordan vise, redigere og feilsøke VBAkoder i Excel
Alle endringer i koden til en makro, enten den er generert automatisk av Excel-makroopptakeren eller skrevet av deg, gjøres i Visual Basic Editor.
For å åpne VB Editor, trykk enten Alt + F11 eller klikk Visual Basic -knappen på Utvikler -fanen.
For å se og rediger koden til en bestemt makro, i Prosjektutforsker til venstre, dobbeltklikk på modulen som inneholder den, eller høyreklikk modulen og velg Vis kode . Dette åpner kodevinduet der du kan redigere koden.
For å teste og feilsøke en makro, bruk F8-tasten. Dette tar deg gjennom makrokoden linje for linje, slik at du kan se effekten hver linje har på regnearket ditt. Linjen som utføres for øyeblikket er uthevet i gult. For å avslutte feilsøkingsmodus, klikk Tilbakestill -knappen på verktøylinjen (blå firkant).
Hvordan kopiere en makro til en annen arbeidsbok
Du opprettet en makro i en arbeidsbok og vil nå bruke den på nytt i andre filer også? Det er to måter å kopiere en makro i Excel:
Kopier modulen som inneholder en makro
Hvis målmakroen ligger i en separat modul eller alle makroene i modulen er nyttige for deg , da er det fornuftig å kopiere hele modulen fra en arbeidsbok til en annen:
- Åpne begge arbeidsbøkene - den som inneholder makroen og den du ønsker å kopiere den til.
- ÅpneVisual Basic Editor.
- I Project Explorer-ruten, finn modulen som inneholder makroen og dra den til målarbeidsboken.
I skjermbildet nedenfor kopierer vi Modul1 fra Bok1 til Bok2 :
Kopier kildekoden til en makro
Hvis modulen inneholder mange forskjellige makroer mens du bare trenger én, kopierer du bare koden til den spesifikke makroen. Slik gjør du:
- Åpne begge arbeidsbøkene.
- Åpne Visual Basic Editor.
- I Project Explorer-ruten dobbeltklikker du på modulen som inneholder makroen du vil kopiere for å åpne kodevinduet.
- I kodevinduet finner du målmakroen, velg koden (begynner med Sub og slutter med End Sub ) og trykk Ctrl + C for å kopiere den.
- I Project Explorer, finn målarbeidsboken, og sett deretter inn en ny modul i den (høyreklikk arbeidsboken og klikk Sett inn > Modul ) eller dobbeltklikk på en eksisterende modul for å åpne kodevinduet.
- I kodevinduet til målmodulen, trykk Ctrl + V for å lime inn koden. Hvis modulen allerede inneholder noe kode, blar du ned til siste kodelinje, og limer deretter inn den kopierte makroen.
Hvordan slette makroer i Excel
Hvis du ikke lenger trenger en bestemt VBA-kode, kan du slette den ved å bruke Makro -dialogboksen eller Visual Basic Editor.
Slette enmakro fra en arbeidsbok
For å slette en makro direkte fra Excel-arbeidsboken, utfør disse trinnene:
- På Utvikler -fanen, i Kode -gruppen, klikk Makroer -knappen eller trykk Alt + F8-snarveien.
- I dialogboksen Makro velger du makroen du vil fjerne og klikk Slett .
Tips:
- For å se alle makroene i alle åpne filer, velg Alle åpne arbeidsbøker fra rullegardinlisten Makroer i .
- For å kunne slette en makro i den personlige makroarbeidsboken, må du først vise Personal.xlsb.
Slette en makro via Visual Basic Editor
En fordel med å bruke VBA Editor er at den lar deg slette en hel modul med alle makroene den inneholder på én gang. VBA Editor tillater også å slette makroer i den personlige makroarbeidsboken uten å vise den.
For å slette en modul permanent , utfør disse trinnene:
- I Prosjektutforsker , høyreklikk på modulen og velg Fjern fra hurtigmenyen.
- Når du blir spurt om du vil eksportere modulen før du fjerner den, klikker du Nei .
For å fjerne en spesifikk makro sletter du ganske enkelt kildekoden direkte i kodevinduet. Eller du kan slette en makro ved å bruke Verktøy -menyen i VBA Editor:
- Velg Makroer<11 fra Verktøy -menyen>. DeDialogboksen Makroer vises.
- I rullegardinlisten Makroer I velger du prosjektet som inneholder den uønskede makroen.
- I boksen Makronavn velger du makroen.
- Klikk Slett -knappen.
Hvordan lagre makroer i Excel
For å lagre en makro i Excel, enten registrert eller skrevet manuelt, lagrer du bare arbeidsboken som makroaktivert (*.xlms). Slik gjør du det:
- I filen som inneholder makroen, klikk på Lagre -knappen eller trykk Ctrl + S.
- Lagre som dialogboksen vises. Velg Excel Macro-Enabled Workbook (*.xlsm) fra rullegardinlisten Lagre som type og klikk Lagre :
Hvordan eksportere og importere makroer i Excel
Hvis du vil dele VBA-kodene dine med noen eller flytte dem til en annen datamaskin, er den raskeste måten å eksportere hele modulen som en .bas-fil.
Eksportere makroer
For å eksportere VBA-kodene dine, er dette hva du må gjøre:
- Åpne arbeidsboken som inneholder makroer.
- Trykk Alt + F11 for å åpne Visual Basic Editor.
- I Project Explorer, høyreklikk på modulen som inneholder makroene og velg Eksporter fil .
- Naviger til mappen der du vil lagre den eksporterte filen, navngi filen og klikk Lagre .
Importere makroer
For å importere en .bas-fil med VBA-koder til Excel, vennligst