Indholdsfortegnelse
Denne vejledning vil sætte dig i gang med at lære Excel-makroer. Du vil finde ud af, hvordan du optager en makro og indsætter VBA-kode i Excel, kopierer makroer fra en arbejdsbog til en anden, aktiverer og deaktiverer dem, viser koden, foretager ændringer og meget mere.
For Excel-nybegyndere ser begrebet makroer ofte uovervindeligt ud. Det kan faktisk tage måneder eller endda år at lære at mestre VBA. Det betyder dog ikke, at du ikke kan udnytte automatiseringsmulighederne i Excel-makroer med det samme. Selv hvis du er helt nybegynder i VBA-programmering, kan du nemt optage en makro for at automatisere nogle af dine gentagne opgaver.
Denne artikel er din indgang til den fascinerende verden af Excel-makroer. Den dækker de vigtigste grundlæggende ting, som du skal vide for at komme i gang, og indeholder links til relaterede dybdegående tutorials.
Hvad er makroer i Excel?
Excel-makroer er et sæt kommandoer eller instruktioner, der er gemt i en projektmappe i form af VBA-kode. Du kan se det som et lille program til at udføre en foruddefineret sekvens af handlinger. Når makroer først er oprettet, kan de genbruges når som helst. Når du kører en makro, udføres de kommandoer, den indeholder.
Makroer bruges typisk til at automatisere gentagne opgaver og daglige rutiner. Dygtige VBA-udviklere kan skrive virkelig avancerede makroer, der går langt videre end at reducere antallet af tastetryk.
Du hører ofte folk omtale en "makro" som "VBA". Teknisk set er der en forskel: En makro er et stykke kode, mens Visual Basic for Applications (VBA) er det programmeringssprog, som Microsoft har skabt til at skrive makroer.
Hvorfor bruge Excel-makroer?
Hovedformålet med makroer er at få mere arbejde udført på kortere tid. Ligesom du bruger formler til at regne på tal og manipulere tekststrenge, kan du bruge makroer til at udføre hyppige opgaver automatisk.
Lad os sige, at du skal udarbejde en ugentlig rapport til din chef. Til dette formål importerer du forskellige analysedata fra et par eller flere eksterne ressourcer. Problemet er, at disse data er rodet, overflødige eller ikke i et format, som Excel kan forstå. Det betyder, at du skal omformatere datoer og tal, trimme ekstra mellemrum og slette tomme felter, kopiere og indsætte oplysninger i de relevante kolonner,lave diagrammer for at visualisere tendenser og gøre mange flere forskellige ting for at gøre din rapport klar og brugervenlig. Forestil dig nu, at alle disse operationer kan udføres for dig med et enkelt museklik!
Selvfølgelig tager det tid at oprette en kompleks makro. Nogle gange kan det tage endnu mere tid end at udføre de samme manipulationer manuelt. Men det er en engangsopgave at oprette en makro. Når den er skrevet, fejlsøgt og testet, vil VBA-koden udføre arbejdet hurtigt og fejlfrit, hvilket minimerer menneskelige fejl og dyre fejltagelser.
Sådan opretter du en makro i Excel
Der er to måder at oprette makroer i Excel på - ved hjælp af Makrooptageren og Visual Basic Editor.
Tip. I Excel udføres de fleste operationer med makroer via Udvikler fanen, så sørg for at tilføje fanen Udvikler til dit Excel-bånd.
Optagelse af en makro
Selv hvis du ikke ved noget om programmering i almindelighed og VBA i særdeleshed, kan du nemt automatisere en del af dit arbejde ved at lade Excel registrere dine handlinger som en makro. Mens du udfører trinene, holder Excel nøje øje med og skriver dine museklik og tastetryk ned i VBA-sproget.
Makrooptageren optager næsten alt, hvad du gør, og producerer en meget detaljeret (ofte overflødig) kode. Når du har stoppet optagelsen og gemt makroen, kan du se koden i Visual Basic-editoren og foretage små ændringer. Når du kører makroen, går Excel tilbage til den optagede VBA-kode og udfører nøjagtig de samme træk.
For at starte optagelsen skal du klikke på Optag makro knappen på enten på den Udvikler eller på fanen Status bar.
Du kan finde detaljerede oplysninger under Sådan registrerer du makroer i Excel.
Skrivning af en makro i Visual Basic Editor
VBA-editoren (Visual Basic for Applications) er det sted, hvor Microsoft Excel opbevarer koden for alle makroer, både registrerede og manuelt skrevne makroer.
I VBA-editoren kan du ikke kun programmere en sekvens af handlinger, men også oprette brugerdefinerede funktioner, vise dine egne dialogbokse, evaluere forskellige betingelser og vigtigst af alt kode logikken! Naturligvis kræver det at skabe din egen makro et vist kendskab til VBA-sprogets struktur og syntaks, hvilket ligger uden for rammerne af denne tutorial for begyndere. Men der er intet, der villeforhindrer dig i at genbruge en andens kode (f.eks. den kode, du har fundet på vores blog :) og selv en komplet nybegynder i Excel VBA bør ikke have problemer med det!
Tryk først på Alt + F11 for at åbne Visual Basic-editoren, og indsæt derefter koden i disse to hurtige trin:
- Højreklik på målarbejdsmappen i Projekt Explorer til venstre, og klik derefter på Indsæt > Modul .
- Indsæt VBA-koden i kodevinduet til højre.
Når du er færdig, skal du trykke på F5 for at køre makroen.
Du kan finde de detaljerede trin under Sådan indsætter du VBA-kode i Excel.
Sådan kører du makroer i Excel
Der er flere måder at starte en makro i Excel på:
- Hvis du vil køre en makro fra et regneark, skal du klikke på Makroer på knappen på Udvikler eller tryk på genvejen Alt + F8.
- Hvis du vil køre en makro fra VBA-editoren, skal du trykke på enten:
- F5 for at køre hele koden.
- F8 for at gennemgå koden linje for linje. Dette er meget nyttigt til test og fejlfinding.
Du kan også starte en makro ved at klikke på en brugerdefineret knap eller ved at trykke på den tildelte genvej. Du kan finde alle detaljer i Sådan kører du makroer i Excel.
Sådan aktiverer du makroer i Excel
Af sikkerhedsmæssige årsager er alle makroer i Excel som standard deaktiveret. Så hvis du vil bruge VBA-kodernes magi til din fordel, skal du vide, hvordan du aktiverer dem.
Den nemmeste måde at aktivere makroer for en bestemt projektmappe er at klikke på Aktiver indhold knappen i den gule sikkerhedsadvarselslinje, der vises øverst på arket, når du åbner en projektmappe med makroer for første gang.
Du kan få mere at vide om makrosikkerhed i Sådan aktiverer og deaktiverer du makroer i Excel.
Sådan ændrer du makroindstillingerne
Microsoft Excel bestemmer, om VBA-koder skal kunne udføres i dine regneark eller ej, baseret på den makroindstilling, der er valgt i Trust Center .
Her er trinene til at få adgang til Excel-makroindstillingerne og ændre dem om nødvendigt:
- Gå til Fil og vælg Indstillinger .
- I ruden til venstre skal du vælge Trust Center , og klik derefter på Tillidscenterindstillinger... .
- I den Trust Center dialogboksen, skal du klikke på Makroindstillinger til venstre, vælg den ønskede indstilling, og klik på OK .
I skærmbilledet nedenfor er standardmakroindstillingen valgt:
Du kan finde flere oplysninger under Excel-makroindstillinger forklaret.
Sådan vises, redigeres og fejlfindes VBA-koder i Excel
Alle ændringer i koden for en makro, uanset om den er genereret automatisk af Excel-makrooptageren eller skrevet af dig selv, foretages i Visual Basic-editoren.
For at åbne VB-editoren skal du enten trykke på Alt + F11 eller klikke på Visual Basic på knappen på Udvikler fanebladet.
Til se og redigere koden for en specifik makro, i den Projekt Explorer på venstre side, dobbeltklik på det modul, der indeholder det, eller højreklik på modulet og vælg Se kode Dette åbner vinduet Kode, hvor du kan redigere koden.
Til test og fejlfinding en makro ved at bruge tasten F8. Dette vil føre dig gennem makrokoden linje for linje, så du kan se den effekt, som hver linje har på dit regneark. Den linje, der er ved at blive udført, er fremhævet med gul farve. For at forlade fejlfindingstilstanden skal du klikke på Nulstil knappen på værktøjslinjen (blå firkant).
Sådan kopieres en makro til en anden projektmappe
Du har oprettet en makro i en arbejdsbog og vil nu gerne genbruge den i andre filer? Der er to måder at kopiere en makro i Excel på:
Kopier modulet, der indeholder en makro
Hvis målmakroen befinder sig i et separat modul, eller hvis alle makroerne i modulet er nyttige for dig, giver det mening at kopiere hele modulet fra en arbejdsbog til en anden:
- Åbn begge arbejdsmapper - den, der indeholder makroen, og den, hvor du ønsker at kopiere den.
- Åbn Visual Basic-editoren.
- Find det modul, der indeholder makroen, i vinduet Projekt Explorer, og træk det til destinationsarbejdsmappen.
I skærmbilledet nedenfor kopierer vi Modul1 fra Bog1 til Bog2 :
Kopier kildekoden til en makro
Hvis modulet indeholder mange forskellige makroer, mens du kun har brug for én, skal du kun kopiere koden for den specifikke makro. Sådan gør du:
- Åbn begge arbejdsbøger.
- Åbn Visual Basic-editoren.
- Dobbeltklik på det modul, der indeholder den makro, som du vil kopiere, i vinduet Projekt Explorer for at åbne dets kodevindue.
- I vinduet Kode skal du finde målmakroen, vælge dens kode (begyndende med Under og slutter med End Sub ) og tryk på Ctrl + C for at kopiere det.
- Find destinationsarbejdsmappen i Projekt Explorer, og indsæt derefter enten et nyt modul i den (højreklik på arbejdsmappen, og klik på Indsæt > Modul ) eller dobbeltklik på et eksisterende modul for at åbne dets kodevindue.
- Tryk på Ctrl + V i kodevinduet i destinationsmodulet for at indsætte koden. Hvis modulet allerede indeholder kode, skal du rulle ned til den sidste kodelinje og derefter indsætte den kopierede makro.
Sådan sletter du makroer i Excel
Hvis du ikke længere har brug for en bestemt VBA-kode, kan du slette den ved at bruge Makro dialogboksen eller i Visual Basic-editoren.
Sletning af en makro fra en projektmappe
Du kan slette en makro direkte fra din Excel-arbejdsmappe ved at udføre følgende trin:
- På den Udvikler under fanen, i fanen Kode gruppe, skal du klikke på Makroer eller tryk på genvejen Alt + F8.
- I den Makro dialogboksen, vælg den makro, du vil fjerne, og klik på Slet .
Tips:
- Hvis du vil se alle makroer i alle åbne filer, skal du vælge Alle åbne arbejdsbøger fra den Makroer i drop-down-listen.
- For at kunne slette en makro i den personlige makroarbejdsmappe skal du først fjerne Personal.xlsb.
Sletning af en makro via Visual Basic Editor
En fordel ved at bruge VBA-editoren er, at den gør det muligt at slette et helt modul med alle de makroer, det indeholder, på én gang. VBA-editoren gør det også muligt at slette makroer i den personlige makroarbejdsmappe uden at fjerne den.
Til permanent slette et modul , udføre disse trin:
- I den Projekt Explorer , højreklik på modulet og vælg Fjern fra kontekstmenuen.
- Når du bliver spurgt, om du vil eksportere modulet, før du fjerner det, skal du klikke på Nej .
Til fjerne en bestemt makro sletter du blot dens kildekode direkte i vinduet Kode. Du kan også slette en makro ved at bruge Værktøj menuen i VBA-editoren:
- Fra den Værktøj menu, vælg Makroer . Makroer dialogboksen vises.
- I den Makroer På rullelisten, vælg det projekt, der indeholder den uønskede makro.
- I den Makronavn boksen, skal du vælge makroen.
- Klik på den Slet knap.
Sådan gemmer du makroer i Excel
Hvis du vil gemme en makro i Excel, som enten er optaget eller skrevet manuelt, skal du blot gemme arbejdsmappen som makroaktiveret (*.xlms). Sådan gør du:
- I filen med makroen skal du klikke på Gem knappen eller tryk på Ctrl + S .
- Gem som dialogboks vises. Vælg Excel-arbejdsmappe med makroaktivering (*.xlsm) fra den Gem som type drop-down-listen og klik på Gem :
Sådan eksporterer og importerer du makroer i Excel
Hvis du gerne vil dele dine VBA-koder med andre eller flytte dem til en anden computer, er den hurtigste måde at eksportere hele modulet som en .bas-fil.
Eksport af makroer
Du skal gøre følgende for at eksportere dine VBA-koder:
- Åbn den projektmappe, der indeholder makroerne.
- Tryk på Alt + F11 for at åbne Visual Basic-editoren.
- Højreklik på det modul, der indeholder makroerne, i Projekt Explorer, og vælg Eksportere fil .
- Naviger til den mappe, hvor du vil gemme den eksporterede fil, navngiv filen, og klik på Gem .
Import af makroer
Følg disse trin for at importere en .bas-fil med VBA-koder til din Excel:
- Åbn den projektmappe, som du vil importere makroer til.
- Åbn Visual Basic-editoren.
- Højreklik på projektnavnet i Project Explorer, og vælg Import af fil .
- Naviger til .bas-filen, og klik på Åbn .
Excel-makroeksempler
En af de bedste måder at lære Excel VBA på er ved at udforske kodeeksempler. Nedenfor finder du eksempler på meget enkle VBA-koder, der automatiserer nogle grundlæggende operationer. Disse eksempler vil naturligvis ikke lære dig at kode, for det findes der hundredvis af professionelle VBA-tutorials. Vi forsøger blot at illustrere nogle få almindelige funktioner i VBA, som forhåbentlig vil gøre filosofien lidt mere velkendt fordig.
Skjul alle ark i en projektmappe
I dette eksempel bruger vi ActiveWorkbook objekt for at returnere den aktive arbejdsbog og den For hver løkke for at gennemgå alle arkene i arbejdsmappen et for et. For hvert fundet ark indstiller vi Synlig til xlSheetVisible .
Sub Unhide_All_Sheets() Dim wks As Worksheet For Each wks In ActiveWorkbook.Worksheets wks.Visible = xlSheetVisible Next wks End SubSkjul det aktive regneark eller gør det meget skjult
Hvis du vil manipulere det aktuelle aktive ark, skal du bruge ActiveSheet objektet. Denne makroeksempel ændrer den Synlig egenskaben for det aktive ark til xlSheetHidden for at skjule det. Hvis du vil gøre arket meget skjult, skal du indstille Synlig til xlSheetVeryHidden .
Sub Hide_Active_Sheet() ActiveSheet.Visible = xlSheetHidden End SubOphæv sammenlægning af alle sammenlagte celler i det valgte område
Hvis du vil udføre visse operationer på et område i stedet for på hele regnearket, skal du bruge Udvælgelse Nedenstående kode ophæver f.eks. sammenlægningen af alle de sammenlagte celler i et udvalgt område med ét slag.
Sub Unmerge_Cells() Selection.Cells.UnMerge End SubVis en beskedboks
Hvis du vil vise en meddelelse til dine brugere, skal du bruge MsgBox Her er et eksempel på en sådan makro i sin enkleste form:
Sub Show_Message() MsgBox ( "Hello World!" ) End SubI makroer i det virkelige liv bruges en beskedboks typisk til information eller bekræftelse. Før du udfører en handling (f.eks. at fjerne celler fra hinanden i vores tilfælde), viser du en Ja/Nej Hvis brugeren klikker på "Ja", fjernes de markerede celler.
Sub Unmerge_Selected_Cells() Dim Answer As String Answer = MsgBox( "Er du sikker på, at du vil fjerne sammenlægningen af disse celler?" , vbQuestion + vbYesNo, "Unmerge Cells" ) If Answer = vbYes Then Selection.Cells.UnMerge End If End SubHvis du vil teste koden, skal du vælge et eller flere områder, der indeholder sammenlagte celler, og køre makroen. Følgende meddelelse vises:
Nedenfor findes links til mere komplekse makroer, der automatiserer udfordrende og tidskrævende opgaver:
- Makro til at kopiere ark fra flere arbejdsbøger til én
- Makroer til at duplikere ark i Excel
- Makroer til alfabetisering af faner i Excel
- Makro til at fjerne beskyttelse af ark uden adgangskode
- Makro til at tælle og summere betinget farvede celler
- Makro til at konvertere tal til ord
- Makro til at skjule alle regneark undtagen det aktive ark
- Makroer til at fjerne skjulte ark
- Makro til at fjerne skjul på alle kolonner
- Makroer til at gøre ark meget skjulte
- Makro til at fjerne alle linjeskift i et aktivt ark
- Makroer til at slette tomme rækker
- Makro til at slette hver anden række
- Makro til at fjerne tomme kolonner
- Makro til at indsætte hver anden kolonne
- Makroer til stavekontrol i Excel
- Makro til omsætning af kolonner til rækker
- Makro til at vende kolonnerne i Excel
- Makroer til at indstille udskriftsområdet
- Makroer til at indsætte sideafbrydelser
Sådan beskytter du Excel-makroer
Hvis du vil forhindre, at din makro kan ses, ændres eller udføres af andre, kan du beskytte den med en adgangskode.
Lås makro til visning
Du kan beskytte dine VBA-koder mod uautoriseret visning og redigering ved at gøre følgende:
- Åbn VBA-editoren.
- Højreklik på det projekt, du ønsker at låse, i projektoversigten, og vælg VBAProject Egenskaber...
- I den Projektets egenskaber dialogboksen, i dialogboksen Beskyttelse skal du kontrollere fanen Lås projektet til visning feltet, indtast adgangskoden to gange, og klik på OK .
- Gem, luk og genåbn din Excel-fil.
Når du forsøger at få vist koden i Visual Basic-editoren, vises følgende dialogboks. Indtast adgangskoden, og klik på OK.
Til låse makroer op , skal du blot åbne den Projektets egenskaber dialogboksen igen og fjern et flueben fra Lås projektet til visning boks.
Bemærk. Denne metode beskytter koden mod visning og redigering, men forhindrer ikke, at den udføres.
Beskyt makroen mod at køre med adgangskode
Hvis du vil beskytte din makro mod at blive udført, så kun de brugere, der kender adgangskoden, kan køre den, skal du tilføje følgende kode, hvor du erstatter ordet "password" med din rigtige adgangskode:
Sub Password_Protect() Dim password As Variant password = Application.InputBox( "Please enter Password" , "Password Protected Macro" ) Select Case password Case Is = False 'gør ingenting Case Is = "password" 'din kode her Case Else MsgBox "Incorrect Password" End Select End SubMakroen bruger InputBox funktion til at bede brugeren om at indtaste adgangskode:
Hvis brugerens indtastning stemmer overens med den hardcodede adgangskode, udføres din kode. Hvis adgangskoden ikke stemmer overens, vises beskedboksen "Incorrect Password". For at forhindre brugeren i at se adgangskoden i Visual Basic-editoren skal du huske at låse makroen for visning som forklaret ovenfor.
Bemærk: I betragtning af antallet af forskellige password crackere, der findes på nettet, er det vigtigt at være opmærksom på, at denne beskyttelse ikke er absolut. Du kan snarere betragte den som en beskyttelse mod utilsigtet brug.
Tips til Excel-makroer
Excel VBA-professionelle har fundet på masser af geniale tricks til at gøre deres makroer mere effektive. Nedenfor vil jeg dele et par af mine favorit-tricks.
Hvis din VBA-kode aktivt manipulerer celleindholdet, kan du fremskynde udførelsen af den ved at slå skærmopdatering og genberegning af formler fra. Når du har udført din kode, skal du slå dette til igen.
Følgende linjer skal tilføjes i begyndelsen af din kode (efter de linjer, der begynder med Dim eller efter den Under linje):
Application.ScreenUpdating = False Application.Calculation = xlCalculationManualFølgende linjer skal tilføjes i slutningen af din kode (før End Sub ):
Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomaticSådan opdeles VBA-kode i flere linjer
Når du skriver kode i VBA-editoren, kan du til tider oprette meget lange udsagn, så du skal rulle vandret for at se slutningen af linjen. Dette påvirker ikke udførelsen af koden, men gør det vanskeligt at undersøge koden.
Hvis du vil dele en lang erklæring op i flere linjer, skal du skrive et rum efterfulgt af en understregning (_) på det sted, hvor du ønsker at bryde linjen. I VBA kaldes dette for linjeafbrydertegn .
For at fortsætte koden korrekt på den næste linje skal du følge disse regler:
- Koden må ikke opdeles midt i argumentnavne.
- Brug ikke en understregning til at afbryde kommentarer. For kommentarer på flere linjer skal du skrive en apostrof (') i begyndelsen af hver linje.
- En understregning skal være det sidste tegn på en linje og må ikke efterfølges af noget andet.
Det følgende kodeeksempel viser, hvordan du opdeler erklæringen i to linjer:
Svar = MsgBox( "Er du sikker på, at du vil fjerne sammenføjningen af disse celler?" , _ vbQuestion + vbYesNo, "Fjern sammenføjning af celler" )Sådan gør du en makro tilgængelig fra en hvilken som helst arbejdsbog
Når du skriver eller registrerer en makro i Excel, kan den normalt kun tilgås fra den pågældende arbejdsmappe. Hvis du gerne vil genbruge den samme kode i andre arbejdsmapper, skal du gemme den i den personlige makroarbejdsmappe. På den måde får du adgang til makroen, når du åbner Excel.
Den eneste hindring er, at den personlige makroarbejdsmappe ikke findes som standard i Excel. For at oprette den skal du registrere mindst én makro. Følgende vejledning indeholder alle detaljer: Personlig makroarbejdsmappe i Excel
Sådan fortryder du en makrohandling
Når en makro er blevet udført, kan dens handling ikke tilbageføres ved at trykke på Ctrl + Z eller ved at klikke på Fortryd knap.
Erfarne VBA-programmører kan naturligvis validere inputværdierne og/eller startbetingelserne, før makroen får lov til at foretage ændringer i et regneark, men i de fleste tilfælde er det ret kompliceret.
En nemmere måde er at gemme den aktive projektmappe inde i makroens kode. Du skal blot tilføje nedenstående linje, før du lader makroen gøre noget andet:
ActiveWorkbook.SaveDu kan eventuelt også vise en meddelelsesboks, der informerer brugeren om, at den aktuelle projektmappe blev gemt lige før makroens hovedkode blev udført.
Hvis du (eller dine brugere) ikke er tilfredse med resultaterne, kan du på denne måde blot lukke og derefter åbne arbejdsmappen igen.
Stop Excel fra at vise en sikkerhedsadvarsel, når der ikke er nogen makroer i en projektmappe
Har du nogensinde befundet dig i en situation, hvor Excel hele tiden spørger, om du vil aktivere makroer, selv om du helt sikkert ved, at der ikke er nogen makroer i denne bestemte projektmappe?
Den mest sandsynlige årsag er, at der er blevet tilføjet VBA-kode, som derefter er blevet fjernet, så der er et tomt modul tilbage, hvilket udløser sikkerhedsadvarslen. Du kan fjerne den ved at slette modulet, gemme arbejdsmappen, lukke og genåbne den. Hvis dette ikke hjælper, kan du gøre følgende:
- Til ThisWorkbook og for hvert enkelt ark skal du åbne vinduet Kode, trykke på Ctrl + A for at markere al koden og slette den (selv om vinduet Kode ser tomt ud).
- Slet alle de brugerformularer og klassemoduler, som arbejdsmappen indeholder.
Sådan opretter og bruger du VBA-makroer i Excel. Tak for din læsning, og jeg håber at se dig igen på vores blog i næste uge!