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.

Excelhjælp som underleverandør til Aros Business Academy

Excelhjælp er blevet valgt som underleverandør til Aros Business Academy’s nye satsning: Kurser i Grundlæggende Excel og Videregående Excel, samt en helt ny Masteruddannelse i Excel.

Kurserne, som afholdes i fire danske byer i 2018 – København, Kolding, Aarhus og Aalborg – vil klæde kursisterne på til at arbejde professionelt og effektivt i Excel.

På kurserne lærer du om alt lige fra formler og funktioner, formatering og validering, pivottabeller og dynamiske dashboards. Til slut i Masteruddannelsen kommer vi endvidere ind på nogle af de helt nye redskaber i Excel som fx “Hent og transformer”, og vi giver en introduktion to automatisering af dine opgaver med Excel VBA macroer.

Du kan finde flere oplysninger om kurserne og Masteruddannelsen på Aros Business Academy’s hjemmeside med følgende links:

Excel Masteruddannelsen starter nye hold op i Maj og September måned.

Tak for i år – Vi ses i 2018!

Året lakker mod enden, og det er tid til at gøre status.

Excelhjælp blev født i sensommeren 2017. Vi er en ung virksomhed, men vi har allerede serviceret 20 andre danske virksomheder i vores første 5 måneder – med opgaver som spænder over dataanalyse, udvikling, programmering, rådgivning og undervisning. Og for kunder af alle slags, fra det lokale autoværksted til Novo Nordisk, fra København til Thisted.

Det har derfor været et hæsblæsende forløb, men selvom vi padler som sindssyge under vandet, så holder vi hovedet koldt – og humøret højt – over vandet!

Antallet af excelhjælpere har også været opadgående i vores lille biks. Vi startede som en enkeltmandsvirksomhed i ordets bogstaveligste forstand, men efterspørgslen har nærmest tvunget os til at udvide. Først med freelancere, og nu, forhåbentlig, snart med vores første fuldtidsansatte.

Målet for 2018 er klart. Vores eksisterende kunder samt 100 nye virksomheder skal have Danmarks bedste service inden for Excel, VBA, og PowerPivot.

Hos Excelhjælp elsker vi Excel, og vi ser frem til at bringe endnu flere gode løsninger ud til de danske virksomheder i 2018.

Rigtig godt nytår!:-)

Valgresultat ved Stortingsvalg i Norge 11-09-2017

Vi har leget lidt med data fra Norges stortingsvalg i går. Her er tre maps, der viser procentdelen af stemmer på henholdsvis Arbeiderpartiet, Høyre og Senterpartiet fordelt på fylker.

 

 

 

 

Høyre beholder (ifølge medierne) magten, men Arbeiderpartiet vinder flest fylker.

Arbeiderpartiet er størst i 11 fylker (Buskerud, Finnmark Finnmárku, Hedmark, Nordland, Nord-Trøndelag, Oppland, Oslo, Sør-Trøndelag, Telemark, Troms Romsa, Østfold),

mens Høyre er størst i 7 (Akershus, Aust-Agder, Hordaland, Møre og Romsdal, Rogaland, Vest-Agder, Vestfold).

Senterpartiet er det eneste parti, udover de to største, som er størst i et fylke, nemlig i Sogn og Fjordane.

Data er hentet fra valg.no.

God august måned

Nu et par dage inde i september kan vi gøre status over de første ugers arbejde, siden vi launch’ede excelhjælp.dk i starten af august.

De første par uger var der stille. Meget stille. Men nuvel, vi havde ikke forventet andet, når vi starter op med nyt navn og nyt domæne.

Men med lidt Google Adwords fik vi de første omkring 100 besøgende ind på vores hjemmeside, og da måneden var omme, havde vi allerede fået en del henvendelser og leveret løsninger til den første lille håndfuld kunder. Løsninger inden for alt fra avancerede formler over kreativ datavisualisering til hardcore VBA-programmering. Tilbagemeldingerne har været meget gode (mildest taget, for at sige det lige ud :D) Referencer gives ved henvendelse.

Et eksempel på en datavisualiseringsopgave (langt ord! pfeeew) kan ses nedenunder, hvor vi har modificeret data-inputtet til et circumplex-diagram for at opnå en enkelt dimension per søjle (efter kundens ønske, naturligvis:-):

Så… alt vel indtil videre. Og vi glæder os sinds**** meget til at fortsætte arbejdet ind i september og videre, og håber at du siger til, hvis du har et Excelark, der driller, eller et udviklingsprojekt, vi skal køre for dig.

De bedste hilsner,

Anders

Online formeloversætter

Vi har lavet en Excel-formel-oversætter, som oversætter alle funktionerne i en Excel-formel fra ét sprog til et andet.

Oversætteren er lagt online i en beta-version her.

Oversætteren er gratis og reklamefri! Vi hører meget gerne forslag til forbedringer.