VBA 1 – 03 VBA-editoren Egenskabsvinduet

vba introkursus

Gennemgang af egenskabsvinduet i VBA-editoren. Eksempel med navngivning og synlighed af ark.




I egenskabsvinduet er der en liste, hvor der på venstre side er de forskellige egenskaber, der tilhører et objekt, og på højre side er der de værdier, som der er for egenskaberne.

De værdier, der typisk kan vælges er binære, altså sandt eller falsk, talværdier, tekst, og valg på lister.

Egenskaberne tilhører nogle objekter. Så det vil sige, at hhvis man har et ark, så har det en række egenskaber. Tilsvarende, så hvis man har valgt en formular, så har det også en række egenskaber.

Vi arbejder videre med den Excelfil, som vi brugte under lektion 2. Det er en fil med tre ark, der hedder Test1, Test2 og Test3.

Hvis vi vælger det øverste ark, så får vi de egenskaber, som der hører til det ark. Bemærk at brugeren, som ser arket ude i brugerfladen, ser navnet som Test1, hvilket er det navn, der står står som egenskab i egenskabsvinduet og med Test1 som værdi.

Men selve arket har også et navn, som er angivet i parentes, og dette er Ark1. Det skyldes at Microsoft Excel objekter som værende ark to forskellige navne, ét som brugeren kan se, og ét som brugeren ikke kan se. Det er gavnligt, da det gør det nemmere med store file med mange ark, da man kan navngive sine ark ift. den funktion, det har.

Antag at det har ark er en fakturadatabase. Vi vil da gerne kalde arket for ArkFaktura. Så kan vi navngive det i egenskabsvinduet, uden at brugeren kan se det. Vi kan så sige, at det navn som brugeren kan se, det er ”Lister”. Brugeren har nu et navn på arket, der hedder lister, mens selve arket hedder ArkFaktura.

Det er god skik at sørge for at kalde de bagvedliggende ark for enten ”ark” som på dansk eller ”sheet” på engelsk, og så efterfølgende deres funktion, da det giver mulighed for tydeligt at fremgå, hvad arket anvendes til.

Der er to egenskaber, som jeg gerne vil gå lidt mere i dettaljer med. Det første er det, der hedder EnableSelection, hvilket giver brugeren rettigheder til at vælge celler i arket eller ej. Der er tre valg på listen. Der er det, der hedder NoRestrictions, hvor brugeren kan vælge alle de celler, der er i arket. Der er det, der hedder UnlockedCells, hvilket betyder, at brugeren kun kan vælge de celler, som ikke er låst. Og der er den, der hedder NoSelection, hvilket betyder at brugeren ikke kan vælge nogen celler i arket overhovedet. Det er muligt at lægge en række begrænsninger ind i arket i forhold til, hvad brugerne skal kunne rette i arket alene på baggrund af denne egenskab.

En af de andr egenskaber, der er lidt mere spændende er synligheden for arket – den egenskab der hedder visible. De fleste, der arbejder med Excel, ved nok ,at det er muligt at skjule et ark ved at højreklikke på arket nede på arkfanen og trykke på skjul. Det er derefter muligt at få arket frem igen ved at højreklikke på fanerne igen og så trykke vis, valge arket på listen, og trykke OK. Så kommer arket frem igen.

Denne egenskab er det også muligt at rette i VBA-editoren, hvor man har en liste for synlighed – men her er det tre valg. Det er simpelthen muligt at vælge, om et ark skal være synligt, om det skal være skjult, eller om det skal være meget skjult. Det sidste betyder, at brugeren ikke har  mulighed for at finde arket frem, medmindre vedkommende åbner VBA-editoren. Hvis vi vælger denne mulighed, vil vi bemærke, at arket, der hedder ”Lister” nu ikke længere fremgår blandt fanerne i bunden af vinduet. Og hvis vi højreklikker på fanerne, har vi heller ikke mulighed for at trykke på på ”Vis” og få arket frem igen. Man skal da igennem VBA-editoren for at få arket vist igen.

En af fordelene ved egenskaberne, det er at man ved at køre forskellige koder i de modulern, man sætter op, har mulighed for at rette i de her egenskaber undervejs. Det kan gøre det muligt for den peron, der sidder og programmerer, at sige, at man ud fra en række kriterier kan vælge at sige, at ens ark skal være låst, så brugeren ikke kan vælge nogen celler, eller det her ark skal sle tikke være synligt, og brugeren må heller ikke have mulighed for at finde det frem.

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 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.