VBA 1 – 02 VBA-editoren

vba introkursus

Gennemgang af VBA-editorens udseende, værktøjer og arbejdsområder.




Her gennemgår vi VBA-eeditoren, så vi vil være bekendte med at arbejde deri, når vi skal videre til programmeringen.

Vi åbner editoren ved at vælge udvikler-fanen og trykke på knappen, der hedder Visual Basic. Det er også muligt at åbne VBA-editoren ved at trykke Alt + F11 på keyboardet.

VBA-editoren ser således ud og har en række vinduer. Der er projektvinduet, egenskabsvinduet, kodningsvinduet, en række menuer, og toolbars alt afhængigt af, hvordan man har sat det op.

Vi starter med at kigge på projektvinduet. VBA har en række projektstyringsværktøjer, hvormed der er mulighed for at styre objekterne, som der tilhører kodning. Det er lidt fint sagt, men det er fx fordi, der er mulighed for at kode inden for et ark for sig, inden for en fil for sig, og inden for nogle andre moduler.

Hvis vi åbner for selve projektet på den der hedder fil 1 her, som jeg har åbent i baggrunden, og så det der hedder Microsoft Excel Objects. Den første hedder Ark 1 (test1). Bemærk, at herovre hedder det første ark i den her Excelfil test1 for brugeren, men objektet har også et navn – det hedder Ark1. Det er fordi, arket har to forskellige navne, alt afhængigt af hvordan man henvender sig til det i kodningssprog. Vi kommer nærmere ind på det senere.

Det er muligt t lave programmering og kode, der kun tilhører ark1 under dette modul eller dette objekt. Der findes et objekt pr. ark, og et objekt som hører til projektmappen, hvor der er mulighed for at programmerefor filen som helhed.

Så findes der det, der hedder forms, eller på dansk formularer. Her er der en, der hedder userform1, der ser således ud. Og der er der mulighed for at tilføre en række kontroller, fx knapper eller lister, som brugeren har mulighed for at vælge, og hvor man kan sætte en række funktioner op ud fra det.

Så er der det, der hedder modules. Modules er i princippet et sted, hvor man kan skrive en række koder, som kan snakke med hinanden og kan udføre en række funktioner.

Modulerne kan man sætte op, så nogle moduler har koder, som har nogle betsemte funktioner, og der er nogle regler for, hvordan koden i modulerne kan snakke med hinanden, så der er nogle ting, koderne kan snakkes ved internt om, og nogle ting, hvor koderne kan snakke sammen imellem moduler.

Jeg foreslår, at man laver moduler i forhold til hvilke funktioner, de har. Fx et modul til at automatisere og et modul til at fejlbehandle.

Der findes også det, der hedder class modules. Vi kommer ikke ind på dem i disse lektioner, men i princippet er det et spørgsmål om at skrive objekterne op fra bunden som VBA-objekter, som vi bruger som standard Excel VBA-objekter.

Så har vi egenskabsvinduet hernede. Hvis vi trykker på ark1, så får vi egenskabsvinduet op for Ark1. Her står der en række egenskaber, der tilhører arket. Vi går lidt mere i detaljer om disse senere. Men her kan man se, at navnet har Ark1, som der kan rettes i. Vi har fx mulighed for at rette det til ”test1”. Nu hedder arket test1, og også i parentes ”(test1)” for brugeren. Hvis der er nogen af de her vinduer, som projekt, egenskaber eller kodning, der mangler, kan de fremkomme ved at trykke på View-menuen, og trykke Code for at se kode, Project Explorer for at se projekter, og Properties Window for at se egenskaber.

Der findes også en Object Browser, som giver mulighed for at se en liste over de objekter, som der ligger under VBA, og de tilhørende medlemmer. Dvs. hvilke funktioner har hvert objekt. Det er noget, som kan være gavnligt, når man bliver rutineret i VBA, for at se hvilke muligheder man har for at lave funktioner ud for de forskellige objekter, som der findes i VBA.

Der er også en Insert menu, som gør det muligt at indsætte nye formularer, moduler eller Class Modules. Hvis vi trykker på indsæt UserForm, så har vi fx mulighed for at sætte en ny formular ind, der så kommer til at hedde UserForm2. Under formaterings-menuen (Format) har vi nu mulighed for at lave noget designmæssig formatering, hvilket typisk anvendes ttil formularer.

Debug-menuen bruger vi typisk til at, når vi skal debugge en kode. Det er som regel, når koden ikke rigtig fungerer, som vi ønsker, den skal fungere. Så kan vi se med debuggeren, hvor det går galt.

Så findes der Run-menuen, som vi kommer til at bruge i starten. Men når man bliver rutineret i VBA, bruger man den ikke så meget. Der er dog en af funktionerne i menuen, som vi kommer til at stifte bekendtskab med. Der er tre funktioner. Det er Run for at køre en sub eller en userform, hvilket er en kode. Det er Break, hvilket stopper en kode. Og det er Reset, hvilket genstarter en kode.

Disse ligger som regel også som knapper i toolbaren.

Der findes en genvej til at breake, som er rigtig god at stifte bekendtskab med. Da en kode nogle gange kan komme til at køre i ring. Det kommer vi nærmere ind på under afsnittet om ”løkker”, hvor man laver et loop. Dvs. at Excel kører en række kode igen og igen og igen. Og hvis der ikke er en definitiv stopfunktion under den løkke, altså et loop, så fortsætter koden bare med at køre, indtil man stopper Excel. Der er det noget bedre at stoppe koden i at køre i stedet for at skulle lukke Excel ned.

Til sidst findes der tools-menuen, som gennemgås kort her. Det er en række værktøjer, der ligger til selve VBA-editoren. Preferences er en af dem, som det er rigtig godt at kende. Hvis man fx gerne vil ghave nogle objekter – altså hvis man gerne vil snakke med nogle andre værktøjer, udover bare Excel, fx at man gerne vil have Excel til at snakke med Access – så bliver man nødt til at stille en reference på, hvilket gør, at Excel får et bibliotek af værktøjer, som kan bruges dertil.

Et eksempel, hvis man gerne vil snakke med Access, det er at man kan sæte Microsoft Office 4.0 Access databasen på. Det vil så give VBA mulighed for at snakke med nogle helt nye værktøjer, som kan bruges til at kommunikere med en Access-database. De eksisterer ikke somstandard, men skal sættes på på denne måde. Vi gennemgår dem ikke yderligere i detaljer her. Dette var blot et eksempel.

Endelig er der kodningsvinduet, hvor vi kommer til at skrive al vores kode under de forskellige objekter. Vi skulle nu gerne være klar til at skrive vores første kode.

 

VBA 3 oversigt

1) With Statement

Gennemgang af with-statement med eksempler.

2) Loops – Introduktion

Generel introduktion tiil loops (løkker) og typer af loops, med simple eksempler på For-Next loops.

3) Loops – Dynamisk opsætning

Detaljeret gennemgang af scoping af loops i forhold til statisk kontra dynamisk opsætning (loops igennem datasæt af dynamisk størrelse).

4) Loops – Dimensionering

Detaljeret gennemgang af loops igennem flere dimensioner, med eksempler på to-dimensionelle loops.

5) Loops – Do While/Until

Detaljeret gennemgang af Do-While og Do-Until loops set i forhold til For-Next, med eksempler.

6) Flerdimensionelle variable (arrays)

Introduktion til og eksempler på brug af variable i flere dimensioner (arrays), herunder For-Each loop.

7) Brugerdefinerede funktioner I

Opsummering og re-visit til brugerdefinerede funktioner, med eksempler på anvendelse på bruger-niveau og VBA-niveau.

8) Brugerdefinerede funktioner II

Eksempler på anvendelse af brugerdefinerede skræddersyede funktioner igennem VBA.

9) Indsætte formler via VBA

Gennemgang af hvordan formler kan indføres i ranges via VBA.

10) Overførsel af data

Gennemgang af hvordan data kan overføres ved brug af VBA med/uden midlertidig lagring af data.

11) Events – Workbook niveau

Detaljeret gennemgang af events på workbook niveau med eksempler på praktisk brug af disse.

12) Events – Worksheet niveau

Detaljeret gennemgang af events på worksheet niveau med eksempler på praktisk brug af disse.

13) Events – BeforePrint/BeforeSave

Eksempler på brug af events BeforePrint og BeforeSave på workbook-niveau med fokus på data-sikkerhed.

14) Formularer – Introduktion

Generel introduktion til formularer (forms) objekter.

15) Formularer – Objekter/Elementer

Detaljeret gennemgang af de objekter (kontrolelementer) der kan indføres i formularer, med eksempler. Herunder beskrives kort ikke-standard objekter med referencer.

16) Formularer – Data og fokus

Detaljeret gennemgang af visning og skjul af formularer, samt form-modal egenskaben for fokus af formularer. Herunder gennemgåes data overførsel til objekter i formularer.

17) Formularer – Simpel dialogboks

Opsætning af en formular (dialogboks) fra bunden til et eksempel med kunde-katalog system.

18) Formularer – Log ind system

Opsætning af en formular (log-ind system) fra bunden til evt. styring af brugeradgang til filer.

19) VBA editoren vinduer

Kort gennemgang af Immediate og Watch vinduet i VBA editoren med eksempler på brug.

20) Fejlhåndtering

Gennemgang af syntax, compilation og runtime errors, samt håndtering af fejl på runtime-niveau.

VBA 1 – 01 Introduktion til VBA

vba introkursus

Introduktion til VBA. Opsætning af Excel til udvikler-fanen, hvorunder VBA-værktøjet ligger. Desuden gennemgåes makrosikkerhed.




I denne lektion vil vi sætte vores Excel op, så vi har adgang til de funktioner, som vi har behov for til VBA og programmering, og vi vil snakke lidt om macro-sikkerhed, inden vi begynder med selve programmeringen.

Som det første skal vi have Excel sat op, så vi har adgang til de funktioner, som VBA anvender. Der findes flere måder at gøre det på. Den simpleste er at have adgang til VBA oppe i en fane i båndet.

Det gør vi ved at klikke på filer, indstillinger, og så har vi mulighed for at tilpasse båndet. Under tilpasning af båndet er der en række hovedfaner, hvorunder udviklerfanen er en af dem. Vi aktiverer denne ved at krydse af i kassen, så der kommer et flueben, hvor vi så trykker OK efterfølgende.

Når vi åbner udviklerfanen, ser vi at der er en række værktøjer, hvor Visual Basic og Makroer er nogle af dem, og en række andre, som vi skal til at anvende senere, når vi kommertilat arbejde med programmeringen.

Ved at klikke på Visual Basic får man åbnet editoren, som man anvender til VBA-programmeringen. Vi kommer ind til, hvordan denne editor virker, og hvordan programmeringen kan sættes op, i de næste lektioner.

Excel er nu sat op, så vi har de funktioner, der er nødvendige, når vi kommer til at skulle udarbejde de næste lektioner.

Inden vi går i gang med selve programmeringen, er det dog vigtigt at vi forstår lidt sikkerhed omkring det, og hvad VBA er for noget.

VBA står for Visual Basic for Applications. Det er et sprog, som er applikationerne i Microsoft Office pakken forstår, og med de applikationer menes der Excel og Word (mv.)

Det er et kodesprog, og det er sat op til de forskellige applikatiner, og dvs. at Excel VBA er ikke nødvendigvis det samme som Word VBA – men der er en lang række fældestræk. Men i bund og grund så er det kode, og koden er i stand til at bygge funktioner, man kan hente informationer fra Excel og så modificere det, og man kan hente noget data fra Excel og modificere det.

Det er også muligt at bygge nogle funktioner fra bunden, som Excel ikke har som standard. Fx at finde den række, som tilhører den sidste linje i en stor datamængde.

Men det er også muligt a tskrive kode, som kan hente nogle informationer fra PC’en. Det kan være relevant, når man skal have fx brugerstyring på. Men noget af den kode er også i stand til at hente nogle informationer, som kan være følsomme for PC’en. Det er derfor vigtigt at have sikkerheden in mente, når man arbejder med VBA, så man beskytter sig imod virus og lignende fra internettet, når der sendes filer til en, som har en VBA-kode i sig.

Der findes fire forskellige standard-opsætninger for sikkerhed, når man arbejder med VBA. De er rangeret fra højeste sikkerhed til ingen sikkerhed.