VBA-skolen 1 – Begynderkursus i VBA til Excel

VBA er et programmeringssprog der kan gøre dine Excel-filer meget mere avancerede. Få et begynderkursus i VBA her.

Excel er for de fleste et regneprogram, men faktisk gemmer Excel på enormt mange avancerede funktioner. Funktioner der for en virksomhed kan automatisere mange processer eller udregne avancerede nøgletal som kan optimere din virksomhed. De avancerede dele omfatter blandt andet de såkaldte makroer og VBA-kode, som jeg vil vise dig lidt af i denne artikel. Du kan også finde mere om Excel i min Excelguide jeg har skrevet tidligere.

VBA er en forkortelse af Visual Basic for Application og det er et programmeringssprog, der er indbygget i Microsoft Office. Det anvendes nok mest i Microsoft Excel eller Microsoft Access, men findes også i nogle af de andre programmer. I denne artikel vil jeg kun gennemgå noget VBA udfra hvordan det anvendes i Microsoft Excel.

Grunden til det hedder “Visual Basic” er fordi det er et programmeringssprog, der er inspireret af et gammelt programmeringssprog der netop hed Visual Basic. Det var også udviklet af Microsoft, og kunne lave Windowsprogrammer. I dag anvendes det ikke mere, men er afløst af det sprog der hedder VB.net (gæt hvad VB står for).

VBA er et forholdsvist simpel programmeringssprog og de fleste der har lysten kan lære det. Du behøver ikke kunne hele programmeringssproget, for at det kan være anvendelig i din hverdag. I stedet kan du bare læse op på de funktioner du netop har brug for, for måske at automatisere de ting du gør i Excel.

Hvorfor skal jeg lære VBA?

VBA gør netop dine Excelfiler meget mere avancerede. Der er faktisk stort set ikke grænser for hvad du kan gøre. Du kan lave programmer inde i Excel, med forms som du også kender fra almindelige Windowsprogrammer. Du kan beregne meget avancerede data – både data der findes inde i Excelfilen og data der findes ude for Excelfilen.

Jeg har gennem tiden brugt VBA meget til at automatisere ting på de arbejdspladser jeg har været ansat på. Lad mig lige prøve at ridse nogle eksempler op, så du kan få en fornemmelse af hvad man kan.

I en virksomhed var jeg med til at udarbejde nøgletal (de såkaldte KPI’er) og grafer, der viste hvordan det gik i Produktionen. Hvor hurtigt blev der produceret produkter? Hvor meget spildtid var der? Blev vi bedre? Blev vi dårligere? Det var altsammen data der skulle omsættes til grafer, der let kunne fortolkes og handles på. Rådata var excelfiler med alle de produktionstider der var registreret i virksomheden, og der skulle så laves grafer herudfra. Hvis graferne skulle være præsentable var det en opgave der tog 3 timer hver eneste uge. Med VBA fik jeg dog udviklet et lille program, der kunne indlæse Excelfilerne, behandle data og lave nogle flotte grafer. Ja, faktisk kunne programmet også selv printe graferne ud. Nu tog det pludselig kun en halv time at lave disse grafer.

Senere blev jeg præsenteret for en udfordring, da vi skulle omlægge en af afdelingens opgaver til et nyt system. Opgaverne skulle håndteres i hver sin mappe i det almindelige Stifindersystem, og med de mange mapper med opgaver vi skulle holde øje med, var det svært at få overblikket. Med VBA fik jeg oprettet et Excelark, der lynhurtigt talte hvor mange opgaver der var i hver mappe, og dermed gav et hurtigt overblik over hvor der skulle sættes ind.

Så har jeg også prøvet at automatisere udarbejdelsen af grafer til KPI’er i en anden afdeling. KPI’erne var mange og der skulle indtastes data fra mange kilder for at udarbejde dem. Her fik jeg lavet en avanceret Excelfil, der automatisk tog de sidste 12 måneder fra de data der var indtastet og lavede en graf ud af disse.

Jeg håber dette gav dig en smagsprøve på hvad du kan bruge VBA til. Lad os lige se nærmere på hvad det er.

Makroer og VBA

Måske du allerede har stiftet lidt bekendtskab med VBA igennem de såkaldte makroer i Excel. Makroer er netop VBA-kode, der kan køres ved at trykke på en knap. Du kan optage en makro ved at indspille en såkaldt Makro. 

Her vælger du i Excel (her angivet udfra Mac-version) Funktioner, herefter Makro og så “Indspil Makro”. Så kommer følgende vindue frem.

Nu kan du gå igang med at indspille din Makro. Dvs. du gør nu det i Excel, du vil have Makroen til at automatisere med en knap.

I dette eksempel skriver jeg f.eks. “Test” i B2, tre tal i B3-5 og en Excelkode i B6. Når jeg er færdig trykker jeg stop nede i hjørnet på Excel.

Og herefter har du altså lavet en Makro i denne Excel-fil. Når du aktiverer denne makro, skriver den Test i B2, tre tal i B3-5 og en Excelkode i B6. Helt automatisk.

Du kan faktisk finde din Makro igen ved at vælge Funktioner -> Makro -> Makroer. Her ser du en liste med de makroer du har indspillet – den har her navnet “Makro1”. For at afspille den kan du klikke på Afspil.

Bemærk at denne makrokode bliver en integreret del af din Excel-fil. Den findes altså som udgangspunkt ikke i de andre Excelfiler du laver.

For at makroen bliver gemt i din Excel-fil, skal du gemme den som en speciel filtype. Når du gemmer vælger du den der hedder “Excel-projektmappe med aktive makroer (.xlsm)”. Ellers vil makroerne ikke blive gemt med.

Når en anden person åbner din excelfil med makroer, vil han blive spurgt om han vil åbne makroerne også. Dette er en sikkerhed, for at undgå at der bliver indlæst en virus, hvis du f.eks. ikke kender personen der har lavet Excelfilen.

Find VBA koden bag din Makro

Nu har du prøvet at indspille en makro – og du kan også afspille den når du har brug for den. Men lad os lige finde koden der egentlig får din makro til at virke. Gå tilbage til Funktioner -> Makro -> Makroer og vælg så “Rediger”. Dette åbner et VBA-vindue hvor du kan se og rette i koden som din Makro laver.

Til højre kan du her se koden bag din Makro. Når du aktiverer din Makro, så betyder det bare at denne kode bliver afspillet.

Som du kan se, findes koden inde i det der hedder et Modul. Det er en slags programpakke, hvor der kan være mange kodestumper indeni. F.eks. koder fra flere forskellige makroer.

Herudover kan du også se, at alt VBA kode skal findes inden for en såkaldt “Sub”. Derfor skal koden begynde med “Sub”, herefter navnet (her “Makro1()”) og så kan koden begynde. Ligeledes skal den ende med “End Sub”. Koden består altså af navnet Makro1() og en kode mellem de to Sub-linier.

Den kode der står med grønt, er den kode der begynder med ‘. Et ‘ angiver at det der står bagefter er ikke kode, men en kommentar til koden. Det kan du bruge til at skrive små stikord i koden, så du kan finde rundt. Men den kode vil altså ikke blive afspillet.

Herefter står der koden:

Range("B2").Select

ActiveCell.FormulaR1C1 = "Test"

Range("B3").Select

ActiveCell.FormulaR1C1 = "4"

Range("B4").Select

ActiveCell.FormulaR1C1 = "5"

Range("B5").Select

ActiveCell.FormulaR1C1 = "6"

Range("B6").Select

Koden Range(“B2”).Select betyder at feltet B2 skal vælges. Når denne afspilles, forstår Excel altså at markøren skal sættes i feltet B2. Range(“B2”) betyder altså felt B2 og Select betyder “vælg den”.

ActiveCell er den kode der henviser til den celle der er valgt. Vi har jo lige valgt B2, så det vil derfor være den der refereres til. Så står der FormulaR1C1, hvilket betyder at du nu indtaster en excel-kode i den notation der hedder R1C1-notation. R1C1-notation er at du angiver række- og kolonne nr. og ikke feltnavnene. Hvor du i en normal formel ville skrive B2 hedder dette med R1C1-notation R2C2 – dvs. række 2 og kolonne 2. Du kunne også have brugt koden Formula i stedet – så var det med almindelig Excelformel i stedet.

Du sætter så lighedstegn for at skrive hvilken formel der skal tildeles feltet og sætter så koden ind i to “”.

VBA-kode i VBA-editoren

Der hvor du nu redigerer en VBA-kode til din makro er en VBA-editor. Den kan du til enhver tid åbne med Funktioner -> Makro -> Visual Basic Editor.

Du kan til enhver tid også her tilføje et nyt modul, hvis du gerne vil have koden adskilt. Dette gør du ved at højreklikke og vælge Indsæt -> Modul.

I Windows-versionen af Microsoft Office kan du også højreklikke på ThisWorkbook og vælge “Insert” og herefter “Userform”. Dette gør det muligt for dig at lave en form, som nogen kan indtaste data på. Men dette kan du desværre ikke på Mac Office, da den er mere begrænset.

Få vist Udvikler-fanen i Excel

Når du skal udvikle VBA i Excel, er det mest praktisk at få Udvikler-fanen permanent fremme i Excel. På denne har du direkte adgang til VBA-editoren, makroer og til at indsætte kontroller som knapper og felter i Excel.

For at få vist Udvikler fanen i Windows-versionen af Excel, åbner du først indstillingerne. Så vælger du “Customize ribbon” og herefter sætter du kryds under Udvikler.

I Excel til Mac, går du ligeledes ind i indstillingerne. Så vælger du Vis og sætter herefter kryds i “Fanen Udvikler” i bunden.

Herefter får du en ny fane i Excel, hvor alle relevante egenskaber er.

I denne artikel fik du altså en meget kort introduktion til hvad VBA er, hvad du kan bruge det til, hvordan du laver en makro og ser koden bagved. I næste afsnit lærer du at lave dit første VBA program i Excel.

3 comments

Leave a Reply

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