Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent...

61
Programmeren in Excel VBA beginners Karel Nijs 2010/09

Transcript of Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent...

Page 1: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in Excel VBA

beginners

Karel Nijs

2010/09

Page 2: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Leswijze

• Eerst wat theorie

• Begeleid met (korte) oefeningen

– Ms Excel 2003

• Online hulp:– http://www.ozgrid.com/VBA/

– http://msdn.microsoft.com/en-us/library/sh9ywfdk(vs.80).aspx

– http://www.microsoft.com/technet/scriptcenter/topics/office/vba.mspx

– http://www.kbcopenleren.be/

• Offline hulp (op CD-ROM):– Boek "VBA voor Word, Excel en Access"

– VBA-handleiding - vanuit Excel.doc

• Korte pauze rond 20u

Page 3: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Doel van deze cursus

VBA leren gebruiken

zodat je bepaalde

repetitieve handelingen

in Ms Excel 2003

kan automatiseren

Page 4: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Wat heb je hiervoor nodig?

• Weten hoe Excel werkt

• Weten hoe Excel intern werkt

• Macro’s kunnen opnemen

• Beperkte programmeerkennis

• Referentie: online of offline

• Vermogen om te interpreteren en af te leiden

• Gezond verstand

Page 5: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in Excel VBA beginners

• Visual Basic Intro

• De Visual Basic Editor (VBE)

• Debuggen in VBA

• Macro’s

• Programmeren in VBA

• Het object Range

• User Defined Functions

• Werkmappen en werkbladen

• Het object Application

• Event macro's

• Excel 2003 vs. 2007

• Variabelen

• Constanten

• Operatoren

• Selecties en iteraties

• Arrays

• Functies en subroutines

Page 6: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in Excel VBA beginners – les 1

• Visual Basic Intro

• De Visual Basic Editor (VBE)

• Debuggen in VBA

• Macro’s

• Programmeren in VBA

– Variabelen

– Constanten

– Operatoren

– Selecties en iteraties

Page 7: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Visual Basic intro

• Visual Basic for Applications (VBA)

– Afgeleide van VB

– Géén standalone taal, leeft bij host-applicatie

• Voorbeeld hosts: Ms Office, Visio, AutoCAD, ...

– Laat toe de host-applicatie aan te passen

– Gebruiksgemak: codegeneratie mbv. macro's

– Script-taal (géén compilatie)

Page 8: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Visual Basic intro

VBscript

Visual Basic

Visual Basic for Applications

Page 9: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Visual Basic intro

HARDWARE

INTERPRETER

Source Code (HLL)

COMPILER

Native Code

VB VB

VBA

slide van Peter Demasure

Page 10: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Visual Basic intro

• Subsets

– VBA is een gelaagde programmeertaal

– Basisfunctionaliteit is hetzelfde voor elke toepassing

– Elke toepassing heeft deelverzameling van instructies en

mogelijkheden

– Programmeren binnen de basislaag werkt in elke subset

– Subset A code werkt niet automatisch in Subset B

Page 11: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Visual Basic intro

• Subsets

VBA Basisfunctionaliteit(Microsoft en anderen)

Subset

Ms

Word

Subset

Ms

Excel

Subset

Ms

Access

Subset

Product

Y

Subset

Product

X

subset

specifieke

code

uniforme

code

tekening uit boek "VBA voor Word, Excel en Access"

Page 12: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Visual Basic intro

• Visual Basic for Applications: voordelen

– Gebruiksgemak (tov. VB): code generatie mbv. macro's

– Host-applicatie uitbreiden met niet-standaard mogelijkheden

– Repetitief werk automatiseren

– Vanuit één applicatie de andere besturen• Bv. Ms Word documenten aanmaken vanuit Ms Excel

Page 13: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in Excel VBA beginners – les 1

• Visual Basic Intro

• De Visual Basic Editor (VBE)

• Debuggen in VBA

• Macro’s

• Programmeren in VBA

– Variabelen

– Constanten

– Operatoren

– Selecties en iteraties

Page 14: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

De Visual Basic Editor (VBE)

• Ontwikkelingsomgeving beschikbaar in elke subset

• ~ editor voor Visual Basic

• De programmacode wordt opgeslagen bij je document � net zoals bij macro's!

• De VBE bevat alle hulpmiddelen voor programmatie

– Objecten browser

– Immediate window

– Debugger

– ...

Page 15: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

De Visual Basic Editor (VBE)

• Demo - opstarten van de VBE:

1. Start Ms Excel

2. Toon de "Visual Basic" werkbalk

3. Docent geeft basisuitleg

• Demo – opstarten van de object browser

• Demo – het immediate window

Page 16: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

De Visual Basic Editor (VBE)

• Scopes:

Bundeling van code

Scope = Project

Bv. module voor aansturing MindStorms

Bundeling van code

Scope = Werkboek

Project

Bundeling van code

Scope = Werkblad

Page 17: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Functies en subroutines

• Procedure

– Procedures steken altijd in modules

• ThisWorkBook en Bladx zijn eigenlijk ook modules!

– Scope of “toegang” of “aanroepbaarheid” of …

• Public

– Toegankelijk voor andere procedures buiten de module

– Bv. procedure om robot te besturen

• Private

– Enkel toegankelijk voor andere procedures binnen de module

– Code hiding

– Bv. (interne) procedure om de snelheid te berekenen

Page 18: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

De Visual Basic Editor (VBE)

• De code:

Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _

Cancel As Boolean)

Dim a As Boolean

a = MsgBox("Wil je écht opslaan?", vbYesNo)

If a = vbNo Then

Cancel = True

End If

End Sub

declaratie van variabelen vereist

procedure wordt opgeroepen bij elke save

variabele declaratie

functie met terugkeerwaarde

terugkeerwaarde opslaan

conditie die de variabele "a" test

Page 19: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in Excel VBA beginners – les 1

• Visual Basic Intro

• De Visual Basic Editor (VBE)

• Debuggen in VBA

• Macro’s

• Programmeren in VBA

– Variabelen

– Constanten

– Operatoren

– Selecties en iteraties

Page 20: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Debuggen in VBA

• Verschillende methodes:

– Immediate window

– Debug.Print “...”

– Debug.Assert( statement )

– Breakpoints

– Door code stappen

– Locals window

– Watch window

• Uitgebreide uitleg: http://www.cpearson.com/excel/Debug.htm

Page 21: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Debuggen in VBA

• Het immediate window

– Of ook het “venster direct”

– Opstarten via Beeld > Venster direct

– Rechtstreeks uitvoeren van commando’s at design time

– Tutorial: http://www.lynda.com/home/TutorialLanding.aspx?lpk4=68857

Page 22: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Debuggen in VBA

• Debug.Print “”

– Tekst afdrukken naar het Debug window

– Enkel zichtbaar bij debuggen

– Hindert verdere programmatie niet

– Bv.

• Debug.Assert( statement )

– Evalueren van een statement

– Code stopt met uitvoeren als statement niet klopt

– Bv.Dim X As Long

X = 123

Debug.Assert (X < 100)

Debug.Print “We beginnen met de lus”

Page 23: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Debuggen in VBA

• Breakpoints

– Uitvoeren code pauzeert wanneer breakpoint bereikt wordt

– Vanaf dan kan je inspecteren en verder door de code stappen

• Door code stappen

– Vanaf een breakpoint

– Gebruik van werkbalk: Beeld > Werkbalken > Foutopsporing

Page 24: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Debuggen in VBA

• Locals window

– Geeft alle variabelen van de huidige procedure + de globale

variabelen weer

• Watch window

– Inspecteren en opvolgen van variabelen

Page 25: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in Excel VBA beginners – les 1

• Visual Basic Intro

• De Visual Basic Editor (VBE)

• Debuggen in VBA

• Macro’s

• Programmeren in VBA

– Variabelen

– Constanten

– Operatoren

– Selecties en iteraties

Page 26: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Macro’s

If you perform a task repeatedly in Microsoft Excel, you

can automate the task with a macro.

A macro is a series of commands and functions that are

stored in a Microsoft Visual Basic module and can be

run whenever you need to perform the task.

For example, if you often enter long text strings in cells,

you can create a macro to format those cells so that

the text wraps.

Page 27: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Macro’s

• Waarom: – Opnemen van acties in Excel

– Ideaal voor als je niet weet hoe je iets moet programmeren

• Wat: – Een macro is net zoals een publieke procedure (Public Sub):

iedereen kan ze uitvoeren

• Voordelen– Eenvoudig

– Hergebruik

• Nadelen:– Code is niet generisch: vaak wordt er bv. gewerkt met Selection

– Nog steeds herwerk/tuning nodig

Page 28: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Macro’s

• Uitleg: – http://office.microsoft.com/en-gb/excel-help/about-

macros-in-excel-HP005201201.aspx

• Tutorial: – http://www.helpwithpcs.com/tipsandtricks/microsoft-

excel-macro-tutorial.htm

Page 29: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

• Maak een nieuw werkboek aan les1_oef1_oplossing.xls

• Voer de stappen op de volgende slide uit

• Bestudeer de macro

– Hoe wordt commentaar aangeduid?

– Wat betekent: Application.CutCopyMode = False?

– Wordt er enkel het Font en het Pattern gewijzigd?

– Welke regels zouden er weg mogen?

– In welke gevallen zou je deze laten staan?

– Welke instellingen worden gemaakt met

Selection.Interior?

– Zorg dat je de With ... End With structuur begrijpt.

– Pas de code aan zodat je een With in een With gebruikt:

Oefening 1

Slide op basis van cursus “Het gebruik van VBA in Ms Excel” van Theo Peek

With ...

With ...

End With

End With

Page 30: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

• Zet tien willekeurige waarden in de cellen A1:A10, bijvoorbeeld de

getallen 1, ..., 10;

• Start de Macro recorder met Tools > Macro > Record New Macro, geef

de macro de naam ErgSimpel en

• Bevestig met OK;

• In beeld verschijnt de Stop Recording Toolbar, zie Figuur 2.1;

• Figuur 2.1: Stop Recording Toolbar.

• Selecteer de cellen A1:A10;

• Copy deze (Ctrl-C);

• Selecteer cel C1;

• Paste (Ctrl-V);

• De selectie is nu C1:C10. Kies Format Cells (Ctrl-1) en kies op het

tabblad Font een blauwe kleur uit voor de letters;

• Kies het tabblad Patterns en kies een gele kleur uit als celachtergrond;

• Klik OK;

• Selecteer cel A1;

• Stop de macro recorder door op de Stopknop op de Stop Recording

Toolbar te klikken;

• Start de Visual Basic Editor (VBE) (ALT-F11).

Oefening 1

Slide op basis van cursus “Het gebruik van VBA in Ms Excel” van Theo Peek

Page 31: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in Excel VBA beginners – les 1

• Visual Basic Intro

• De Visual Basic Editor (VBE)

• Debuggen in VBA

• Macro’s

• Programmeren in VBA

– Variabelen

– Constanten

– Operatoren

– Selecties en iteraties

Page 32: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Variabelen

• Variabelen

– Gegevens opslaan in geheugen

– Slechts geldig tijdens uitvoeren van het programma

– Verschillende gegevenstypes mogelijk:• Boolean true or false

• Integer 16 bits -> van - 2^15 tot 2^15 -1

• Long 32 bits -> van - 2^31 tot 2^31 -1

• Double 64 bits -> van - 2^63 tot 2^63 -1

• Date bestemd voor datums

• Object verwijzing naar object (bv. WorkSheet)

• String tekengegevens (bv. "appel")

• Variant kan alle types bevatten

• ...

Page 33: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Variabelen

• Variabelen

– Elke variabele heeft een unieke naam

• Conventies:

– Eerste teken moet letter zijn

– Spaties, punten en komma's zijn niet toegelaten

– Leestekens #, %, !, &, $ zijn niet toegelaten

– Max lengte = 254 karakters

• CamelCase + Hungarian notation:

– Bv. strElkWoordEenNieuweHoofdletter

• Voorbeeld:

– strNaamKlant

– iAantalJaren

Page 34: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Variabelen

• Declaraties

– Compiler informeren van bestaan: naam + gegevenstype

– Keywoord = Dim• Dim <naam> As <type>

• Bv. Dim strMijnNaam As String

– Niet verplicht om variabelen an sich te declareren

• Veroorzaakt errors bij ontbreken

• Afdwingen door Option Explicit boven elke code te zetten

– Eénmalig bovenaan in het bestand dat de code bevat

• Zie ook oefening 1

Page 35: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Variabelen

• Declaraties

– Niet verplicht om type te declareren

• In plaats van:

Dim strMijnNaam As String

schrijven:

Dim strMijnNaam

• Gevolgen:

– Wordt achterliggend als Variant gedeclareerd:

Dim strMijnNaam As Variant

– Variant kan álle types bevatten

– Nadelen:

» Trager

» Meer geheugengebruik (te vermijden)

Page 36: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Variabelen

• Declaraties

– Afspraken:

• Naamgeving volgens combinatie CamelCase en Hungarian notation

– Bv. strElkWoordEenNieuweHoofdletter

• Altijd Option Explicit bovenaan elke code bestand

• Altijd een gegevenstype declareren

– Bv. Dim strMijnNaam As String

Page 37: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Variabelen

• Oefening 2:

– Pas de Workbook_BeforeSave methode aan zodat:

• Aan de gebruiker een eerste getal gevraagd wordt.

• Aan de gebruiker een tweede getal gevraagd wordt.

• Aan de gebruiker de som getoond wordt.

– Tips:

• Een waarde aan de gebruiker kan je opvragen met de

functie InputBox

• Om een bericht te tonen: zie oefening 1

Page 38: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

• Oefening 2:

Programmeren in VBA > Variabelen

Page 39: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

• Oefening 2 - uitbreiding:

– Pas oefening 2 aan zodat:

• Wanneer je een getal ingeeft het programma een

foutmelding toont en stopt

– Tips:

• De Information module in de VBA bibliotheek

Programmeren in VBA > Variabelen

Page 40: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Variabelen

• Varia:– String concatenatie:

• Bv. “Mijnheer “ & strVoorNaam & strNaam

– Waardes tonen aan de gebruiker:• Bv. MsgBox “Dit is het bericht”, , “Titel”

– Waardes vragen aan de gebruiker:• Bv. strWaarde = InputBox(“Geef iets”, “Titel” )

– Meerdere declaraties op één regel:• Bv. Dim iGetal1 As Integer, iGetal2 As Integer

– Commentaar met een enkele quote:• Bv. ‘dit is commentaar en wordt genegeerd

Page 41: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Variabelen

• Declaratie – scope:

– Public:

• Declaratie op module niveau

• Beschikbaar binnen alle procedures in het project

• Bv. Public strNaam as String

– Private:

• Declaratie op module niveau

• Enkel beschikbaar binnen alle procedures in de module

• Bv. Private strNaam as String

Page 42: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in Excel VBA beginners – les 1

• Visual Basic Intro

• De Visual Basic Editor (VBE)

• Debuggen in VBA

• Macro’s

• Programmeren in VBA

– Variabelen

– Constanten

– Operatoren

– Selectiestructuren: If ... Then ... ElseIf ... End If

Page 43: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Constanten

• Declaratie – scope:– Const:

• Constante � Waarde is niet wijzigbaar

• Afspraak: naam in HOOFDLETTERS

• Bv. Const NAAM as String = "karel"

• Voorbeeld:

Private Sub Demo()

Const NAAM As String = "karel"

MsgBox NAAM

NAAM = "nijs"

End Sub

MessageBox toont "karel"

Declaratie als constante

Page 44: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in Excel VBA beginners – les 1

• Visual Basic Intro

• De Visual Basic Editor (VBE)

• Debuggen in VBA

• Macro’s

• Programmeren in VBA

– Variabelen

– Constanten

– Operatoren

– Selecties en iteraties

Page 45: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Operatoren

• Expressies

– = waarde of groep waarden die geëvalueerd wordt

– Resultaat = waarde van de expressie

– Bv.

• Waarde = 4 + 5

– Kunnen opgebouwd worden uit:

• Constanten, variabelen

• Operatoren

• Arrays en hun elementen (zie verder)

• Functies

Page 46: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Operatoren

• Expressies

– Kunnen opgebouwd worden uit:

• Constanten, variabelen:

– Bv. dPrijsInclusief = iPrijsExclusief * BTW

• Operatoren (zie volgende slide):

– Rekenkundige, vergelijkings, logische en samenvoegings

• Arrays en hun elementen (zie later):

– Bv. dPrijsInclusief = aPrijzenLijst(1) * BTW

• Functies:

– Bv. sNaam = InputBox(“Geef je naam in:”)

Page 47: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Operatoren

• Operatoren:

– Vergelijking:

waarde = operand operator operand

Bv. prijs = prijs * BTW

– Soorten:

• Rekenkundig:

– +, -, *, /, \, ^ en Mod

– Bv. a + 5

• Vergelijking:

– =, <, <=, >, >=, <>, is en like

– Bv. If( 5 < prijs )

Page 48: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Operatoren

• Operatoren:

– Soorten:

• Logisch:

– And, Or, Not, Xor, Eqv en Imp

– Bv. If( 5 < prijs And prijs < 10 )

• Samenvoeging:

– &

– Bv. MsgBox "Mijnheer " & naam

Page 49: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in Excel VBA beginners – les 1

• Visual Basic Intro

• De Visual Basic Editor (VBE)

• Debuggen in VBA

• Macro’s

• Programmeren in VBA

– Variabelen

– Constanten

– Operatoren

– Selecties en iteraties

Page 50: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Selecties en iteraties

• Niet bij elk scenario moet elke code uitgevoerd

worden

– Bv. als de prijs 0 is, moet je geen factuur sturen

– Bv. als de prijs < 0 is, moet je een rode tekst tonen

• Sommige code moet meermaals achter elkaar

uitgevoerd worden

– Bv. het overlopen van alle orders op een factuur om het

totaal te berekenen

Page 51: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Selecties en iteraties

• Beslissen met besluitsvormingsstructuren

– If ... Then ... End If

– If ... Then ... Else ... End If

– If ... Then ... ElseIf ... Else ... End If

– Select Case

• Code herhalen met lusstructuren

– For ... Next

– For Each ... Next

– Do While ... Loop

– Do Until ... Loop

Page 52: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Selecties en iteraties

• If ... Then ... End If

– Conditie

– Als ... dan ...

– Bv.

If ( tegoed < 0 ) Then

MsgBox "Gelieve te betalen!"

End If

expressie moet valideren als "waar" -> true

wordt enkel uitgevoerd

� expressie voldaan

einde van de conditie

begin

van de

conditie

Page 53: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Selecties en iteraties

• If ... Then ... Else ... End If– Probleem: we willen ook iets (een alternatief) laten uitvoeren als niet

aan de voorwaarde voldaan is

– Nadelen:

• Veel typwerk

• Niet duidelijk dat code bij elkaar hoort

If ( tegoed < 0 ) Then

MsgBox "Gelieve te betalen!"

End If

If ( tegoed > 0 ) Then

MsgBox "Correcte betaler!"

End If

Page 54: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Selecties en iteraties

• If ... Then ... Else ... End If

– Conditie

– Als ... dan ..., anders ...

– Bv.

If ( tegoed < 0 ) Then

MsgBox "Gelieve te betalen!"

Else

MsgBox "Correcte betaler!"

End If

expressie moet valideren als "waar" � true

wordt enkel uitgevoerd

� expressie voldaanbegin

van de

andere

optiewordt enkel uitgevoerd

� expressie niet voldaan

Page 55: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Selecties en iteraties

• If ... Then ... ElseIf ... Else ... End If

– Wat met meerdere (> 2) alternatieven?

– Als ... dan ..., anders dan ..., ..., anders ...

– Structuur:

If ( voorwaarde1 = True ) Then

...

ElseIf ( voorwaarde2 = True ) Then

...

ElseIf ( voorwaarde3 = True ) Then

...

...

Else

...

End If

nog meer voorwaarden?

geen enkele voorwaarde voldaan

Page 56: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Selecties en iteraties

• If ... Then ... ElseIf ... Else ... End If

– Bv. If ( tijd < 12u ) Then

MsgBox "Goedemorgen!"

ElseIf ( tijd < 15u ) Then

MsgBox "Goedemiddag!"

ElseIf ( tijd < 18u ) Then

MsgBox "Goede namiddag!"

ElseIf ( tijd < 22u ) Then

MsgBox "Goede avond!"

Else

MsgBox "Goedenacht!"

End If

Page 57: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Selecties en

iteraties

• Debuggen

– = zoeken naar fouten in een programma

– Starten door een break point te plaatsen

– Vanaf dan: F8 voor elke volgende stap

– In VBE: View > Toolbars > Debug

Page 58: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Selecties en

iteraties

• Oefening 3:

– Maak een applicatie die:

• Een eerste getal vraagt aan de gebruiker

• Een tweede getal vraagt aan de gebruiker

• Een constante variabele met waarde 55 heeft

• Volgende berekening uitvoert:

– (getal1 + constant getal) modulo getal2

Page 59: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in VBA > Selecties

en iteraties

• Oefening 1:

– Maak een applicatie die:

• Volgend bericht toont aan de gebruiker:

– Als het resultaat = 0:

"(<getal1>+<cte>) % <getal2> = <modulo> Perfecte deling"

– Als het resultaat < 3:

"(<getal1>+<cte>) % <getal2> = <modulo> Kleine afwijking"

– Als het resultaat < 5:

"(<getal1>+<cte>) % <getal2> = <modulo> Grotere afwijking"

– Alle andere gevallen:

"<modulo> is een te grote afwijking!"

• Testdata:

– 5 en 3

– 10 en 7

– 12 en 7

– 841 en 711

Bv. (10 + 55) % 7 = 2 Kleine afwijking

Page 60: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Programmeren in Excel VBA beginners – les 2

• Korte herhaling les 1

• Programmeren in Excel VBA

– Select Case

– Lussen

Page 61: Programmeren in Excel VBA beginners - karelnijs.be · Toon de "Visual Basic" werkbalk 3. Docent geeft basisuitleg • Demo –opstarten van de object browser • Demo –het immediatewindow.

Bedankt voor jullie aandacht!