programmeren in excel vba beginners - .karelnijs.be...
TRANSCRIPT
![Page 1: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/1.jpg)
Programmeren in Excel VBA
beginners
Karel Nijs
2010/09
![Page 2: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/2.jpg)
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 v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/3.jpg)
Programmeren in Excel VBA beginners – les 2
• Herhaling les 1
• Programmeren in VBA:
– Select Case
– Selecties en iteraties (vervolg)
• Het object Range
• Range > Verwijzen naar het juiste cellenbereik
• Programmeren in VBA:
– Selecties en iteraties (vervolg)
– Arrays
• Range > Opvullen en bewerken
![Page 4: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/4.jpg)
Herhaling les 1
• Visual Basic Editor:
– Opstarten van de Visual Basic Editor (VBE):
1. Start Ms Excel
2. Toon de "Visual Basic" werkbalk
– Opstarten van de object browser:
– Code hinting met: CTRL+spatie
![Page 5: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/5.jpg)
Herhaling les 1
• Variabelen:
– Variabele dient om gegevens op te slaan in het (vluchtige)
werkgeheugen
– Slechts geldig tijdens uitvoeren van het programma
– Verschillende gegevenstypes mogelijk:
• Boolean, Integer , Long, Double, Date, Object, String,
Variant, ...
– Beperkingen qua naamgeving
![Page 6: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/6.jpg)
Herhaling les 1
• Variabelen:
– Declaratie 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 7: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/7.jpg)
Herhaling les 1
• 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 8: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/8.jpg)
Herhaling les 1
• Besluitvormingsstructuren:
• If … Then … End If
• If … Then … Else … End If
• If … Then … ElsIf … Else … End If
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 9: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/9.jpg)
Programmeren in Excel VBA beginners – les 2
• Herhaling les 1
• Programmeren in VBA:
– Select Case
– Selecties en iteraties (vervolg)
• Het object Range
• Range > Verwijzen naar het juiste cellenbereik
• Programmeren in VBA:
– Selecties en iteraties (vervolg)
– Arrays
• Range > Opvullen en bewerken
![Page 10: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/10.jpg)
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 11: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/11.jpg)
Programmeren in VBA > Selecties en iteraties
• Select case
– If ... Then ... ElseIf ... Else ... End If
• Toch niet zo overzichtelijk...
• Moeilijk onderhoudbaar
– Select case:
• Wanneer een voorwaarde (vele) verschillende opties
kan zijn
• Select Case � n statussen
• If Else � 2 statussen
![Page 12: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/12.jpg)
Programmeren in VBA > Selecties en iteraties
• Select case
– Structuur:
Select Case voorwaarde
Case mogelijkheid1
...
Case mogelijkheid2
...
Case mogelijkheid3
...
Case Else
...
End Select
![Page 13: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/13.jpg)
Programmeren in VBA > Selecties en iteraties
• Select case
– Voorbeeld:Dim iUur as Integer
iUur = InputBox("Welk uur is het?")
Select Case iUur
Case 8
MsgBox "Goedemorgen!"
Case 12
MsgBox "Goedemiddag!"
Case 16
MsgBox "Goede namiddag!"
Case Else
MsgBox "Hallo!"
End Select
slechts één van deze
mogelijkheden is geldig
als alle andere
mogelijkheden niet
geldig zijn
![Page 14: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/14.jpg)
Programmeren in VBA > Selecties
en iteraties
• Oefening 1: (kort)
– Hermaak oefening 3 van les 1 met een Select Case
– Testdata:
• 58 en 4
• Oefening 1 - uitbreiding:
– Wat met de modulo's 1, 2 en 4?
– Meer informatie: http://www.ozgrid.com/VBA/select-
case.htm
![Page 15: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/15.jpg)
Programmeren in VBA > Selecties en iteraties
• Select case
– Opmerkingen:
• Meerdere cases tegelijk behandelen:
– Bv. Case 5, 3, 10
• Een bereik behandelen:
– Bv. Case 1 To 3
– Bv. Case Is < 3
• Ook andere types mogelijk:
– Bv. Select Case strSport
Case "voetbal"
...
End Select
![Page 16: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/16.jpg)
Programmeren in VBA > Selecties en iteraties
• Select case
– Opmerkingen:
• Als meerdere cases geldig zijn, dan wordt enkel de
eerste die aan de voorwaarde voldoet, uitgevoerd!
– Bv.
Dim i as integer
i = 2
Select Case
Case Is < 5
MsgBox "< 5"
Case Is < 3
MsgBox "< 3"
End Select
eerste case die voldoet
![Page 17: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/17.jpg)
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 18: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/18.jpg)
Programmeren in VBA > Selecties en iteraties
• Lusstructuren:
– Om een stuk code meerdere malen uit te voeren
– Omdat je ooit moet eindigen � grenzen instellen
• Start
• Einde
• Soorten:
– For ... Next
– Do While ... Loop
– Do Until ... Loop
![Page 19: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/19.jpg)
Programmeren in VBA > Selecties en iteraties
• For ... Next
– Van ... tot ...
– Structuur:
– Eindgrens is inclusief
– Teller verhoogt standaard telkens met 1
• Stap is instelbaar (natuurlijke getallen):
For teller = beginpunt To eindpunt
...
Next
For teller = beginpunt To eindpunt Step 2
...
NextAndere voorbeelden: 100, -5, 7, -1, ...
wordt bij elke iteratie
uitgevoerd
![Page 20: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/20.jpg)
Programmeren in VBA > Selecties en iteraties
• For ... Next
– Voorbeeld:
Dim beginpunt As Integer, eindpunt As Integer
Dim teller As Integer
beginpunt = 5
eindpunt = 10
teller = 0
For teller = beginpunt To eindpunt
MsgBox teller
Next
Toont: 5, 6, 7, 8, 9 én 10
geen step � standaard = 1
![Page 21: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/21.jpg)
Programmeren in VBA > Selecties en iteraties
• For ... Next
– Stap vergroten:
Dim beginpunt As Integer, eindpunt As Integer
Dim teller As Integer, stapGrootte As Integer
beginpunt = 5
eindpunt = 10
teller = 0
stapGrootte = 2
For teller = beginpunt To eindpunt Step stapGrootte
MsgBox teller
Next
Toont enkel: 5, 7 en 9
![Page 22: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/22.jpg)
• For ... Next
– Uitbreken:
• Vroegtijdig de lus afbreken
• Kan soms nuttig zijn
– Statement: Exit For
– Voorbeeld:
For teller = beginpunt To eindpunt
If( ... ) Then
Exit For
End If
Next
Programmeren in VBA > Selecties en iteraties
![Page 23: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/23.jpg)
Programmeren in Excel VBA beginners – les 2
• Herhaling les 1
• Programmeren in VBA:
– Select Case
– Selecties en iteraties (vervolg)
• Het object Range
• Range > Verwijzen naar het juiste cellenbereik
• Programmeren in VBA:
– Selecties en iteraties (vervolg)
– Arrays
• Range > Opvullen en bewerken
![Page 24: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/24.jpg)
Het object Range
• Range = bereik van cellen
– Eén cel
– Rij of kolom van cellen
– Tabel
– Willekeurige selectie van cellen
• Cel is basissteen van Ms Excel
– Data, draaitabellen, grafieken, ...
Slide op basis van cursus “Programmeren in Excel 2007 VBA” van Peter Demasure
![Page 25: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/25.jpg)
Het object Range
• Objectstructuur:
– Een Range zit in een Worksheet dat in een Workbook zit:
• Range ∈ Worksheet ∈ Workbook
Workbook
Range van 1 cel
Worksheet
![Page 26: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/26.jpg)
Het object Range
• Voorbeeld:
Slide op basis van cursus “Programmeren in Excel 2007 VBA” van Peter Demasure
Range("A1") = 50
Dim WB As Workbook
Dim WS As WorkSheet
Dim rngCel As Range
Set WB = ActiveWorkbook
Set WS = ActiveSheet
Set rngCel = WS.Range("A1")
rngCel = 50
beter!
Workbooks("Kalender.xls").Worksheets("Januari").Range("A1") = 50
nog beter!
perfect!
![Page 27: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/27.jpg)
Het object Range
• Voorbeeld:
Slide op basis van cursus “Programmeren in Excel 2007 VBA” van Peter Demasure
Dim WB As Workbook
Dim WS As WorkSheet
Dim rngCel As Range
Set WB = Workbooks("Kalender.xls")
Set WS = WB.Worksheets("Januari")
Set rngCel = WS.Range("A1")
rngCel = 50
Dim WB As Workbook
Dim WS As WorkSheet
Dim rngCel As Range
Set WB = ActiveWorkbook
Set WS = ActiveSheet
Set rngCel = WS.Range("A1")
rngCel = 50
perfect!
![Page 28: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/28.jpg)
Het object Range
• Uitleg bij voorbeeld:
– Standaard verwijst Range(“A1”) naar de cel A1 van het toevallig
actieve werkblad in het toevallig actieve werkboek
• Niet handig!
– Daarom:
• Altijd Workbook specifiëren
• Altijd Worksheet specifiëren
![Page 29: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/29.jpg)
Het object Range
• For Each ... Next:
– Met VBA kan je collecties eenvoudig overlopen
– Bijvoorbeeld:
For Each cell in ActiveSheet.Cells
‘...
Next
collectietype Variant
![Page 30: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/30.jpg)
Programmeren in Excel VBA beginners – les 2
• Herhaling les 1
• Programmeren in VBA:
– Select Case
– Selecties en iteraties (vervolg)
• Het object Range
• Range > Verwijzen naar het juiste cellenbereik
• Programmeren in VBA:
– Selecties en iteraties (vervolg)
– Arrays
• Range > Opvullen en bewerken
![Page 31: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/31.jpg)
Range > Verwijzen naar het juiste
cellenbereik
• Verwijzen naar vast bereik via celadres
– Range( celadres )
– Rows( celadres )
– Columns( celadres )
Slide op basis van cursus “Programmeren in Excel 2007 VBA” van Peter Demasure
![Page 32: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/32.jpg)
Range > Verwijzen naar het juiste
cellenbereik
Slide op basis van cursus “Programmeren in Excel 2007 VBA” van Peter Demasure
Range("5:5,8:8")Rij vijf en acht los van elkaar
Range("E:E,H:H")Kolommen vijf en acht, los van elkaar
Range("B4,E20")Cellen B4 en E20, los van elkaar
Rows("5:8")Rij vijf tot acht
Columns("E:H")Kolom vijf tot acht
Rows("5") of Rows("5:5") of
Range("F5").EntireRow
Vijfde rij
Columns("E") of Columns("E:E") of
Range("E3").EntireColumn
Vijfde kolom
Range("B4:E20") of
Range("B4","E20")
Vaste tabel van cel B4 tot en met cel E20
Range("C1")= "=A1 + B1"
Range("C1").Formula= "=Sum(A1:B1)"
De formule in cel C1 (eerste mogelijkheid)
De formule in cel C1 (tweede mogelijkheid)
Range("A1") = 5
Range("B1") = 3
Range("C1")=Range("A1")+Range("B1")
Het cijfermatig resultaat in cel C1
![Page 33: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/33.jpg)
Range > Verwijzen naar het juiste
cellenbereik
• Verwijzen naar dynamisch bereik via celadres
– Getallen zijn makkelijker te manipuleren dan letters
– Verwijzen naar cel via: Cells( rij, kolom )
– Bijvoorbeeld:
• Vast: Range( “C5” )
• Dynamisch: Cells( 5, 3 )
– Alle cellen binnen een bereik overlopen:
• Cells( index )
Slide op basis van cursus “Programmeren in Excel 2007 VBA” van Peter Demasure
![Page 34: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/34.jpg)
Range > Verwijzen naar het juiste
cellenbereik
Slide op basis van cursus “Programmeren in Excel 2007 VBA” van Peter Demasure
Range("A1").CurrentRegion.Rows(1)De veldnamenrij van een dynamische tabel
beginnend in de linkerbovenhoek van het werkblad
Rows(5).Resize(3,0)Rij vijf tot acht
Columns(5).Resize(0,3)Kolom vijf tot acht
Rows(5) of Cells(5,lngKolom).EntireRow
Rows(lngIndex) of Cells(lngRij,lngKolom).EntireRow
Vijfde rij
Dynamische rij
Columns(5) of Cells(lngRij,5).EntireColumn
Columns (lngIndex) of
Cells(lngIndex).EntireColumn
Vijfde kolom
Dynamische kolom
Range("A1").CurrentRegion
Cells(lngRij, lngKolom).CurrentRegion
Dynamische tabel opgemaakt in Excel
met vaste linkerbovenhoek en
met een dynamische linkerbovenhoek.
CurrentRegion verwijst naar het gebied dat
begrensd is door lege rijen en lege kolommen.
Cells(lngRs,lngKs).Resize(lngRij,lngKolom)Tabel opgemaakt in VBA met
variabel aantal cellen en vlottende bovenhoek
Range(Cells(1,1), Cells(lngRij,lngKolom)) of
Cells(1,1).Resize(lngRij,lngKolom)
Tabel opgemaakt in VBA met
variabel aantal cellen en vaste bovenhoek
Cells(lngRij, lngKolom)Dynamische celverwijzing
Cells(5,4)De cel met adres D5
![Page 35: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/35.jpg)
Range > Verwijzen naar het juiste
cellenbereik
• Cellen en tabellen
– Vast bereik:
– Dynamisch bereik
– Dynamisch in Excel
Slide op basis van cursus “Programmeren in Excel 2007 VBA” van Peter Demasure
Set rngTabel = WS.Range("A1:E20")
Set rngTabel = WS.Cells(1,1).Resize(lngRij, lngKolom)
Set rngTabel = WS.Range("A1").CurrentRegion
![Page 36: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/36.jpg)
• Open opgave les2_oef2_opgave.xls
• Maak een functie die de faculteit berekent
– Tip: Google: wiki faculteit
• Input getal:
– Mag niet hoger 15 zijn
• Output:
– Kolom B (vanaf B3) bevat de faculteit iteratie
– Kolom C (vanaf C3) bevat de n-de faculteit
• Gebruik named ranges en niet B1 en B3
– Tip: http://www.cpearson.com/excel/DefinedNames.aspx
• Koppel de macro aan een knop
– Tip: http://www.mrexcel.com/tip068.shtml
Oefening 2
![Page 37: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/37.jpg)
• Oplossing:
• Uitbreiding:
– Bereken eerst de faculteit van 15 en dan van 5
• Wat gebeurt er (niet)?
• Los dit probleem op
– Vang alle speciale gevallen van de faculteit functie op
Oefening 2
![Page 38: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/38.jpg)
Range > Verwijzen naar het juiste
cellenbereik
• Cellen en tabellen
– Dynamisch in Excel
Dim rngTabel as Range
Set rngTabel = WS.Range(“C6").CurrentRegion
Range(“C6”)
rngTabel
![Page 39: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/39.jpg)
Slide op basis van cursus “Programmeren in Excel 2007 VBA” van Peter Demasure
Range > Verwijzen naar het juiste
cellenbereik
rngTabel.Resize(,rngTabel.Columns.Count + 1)
Een kolom toevoegen van de tabel
rngTabel.Resize(rngTabel.Rows.Count - 1).Offset(1).Columns(1)
De eerste kolom van datablok van de tabel
rngTabel.Resize(rngTabel.Rows.Count - 1).Offset(1)
Het datablok van de tabel
Set rngRij = rngTabel.Rows(rngTabel.Rows.Count).Offset(1)
De eerste rij onder de tabel (waar bijv. de som terecht komt)
Set rngCel = rngTabel.Columns(rngTabel.Columns.Count)
De laatste kolom van een tabel
Set rngCel = rngTabel.Cells(rngTabel.Cells.Count)
De laatste cel van een tabel
Set rngCel = rngTabel.Cells(1)
De eerste cel (linkerbovenhoek) van een tabel (dit kan een der welke cel zijn!)
Set rngCel = WS.Cells(1)
De eerste cel (linkerbovenhoek) van een werkblad (dit is steeds cel A1)
![Page 40: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/40.jpg)
Programmeren in Excel VBA beginners – les 2
• Herhaling les 1
• Programmeren in VBA:
– Select Case
– Selecties en iteraties (vervolg)
• Het object Range
• Range > Verwijzen naar het juiste cellenbereik
• Programmeren in VBA:
– Selecties en iteraties (vervolg)
– Arrays
• Range > Opvullen en bewerken
![Page 41: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/41.jpg)
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 42: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/42.jpg)
Programmeren in VBA > Selecties en iteraties
• Do While ... Loop
– Doe zolang ...
– Structuur:
– Verschil met If Else:
• Geen ingebouwde grenzen
• Teller zelf te implementeren
– Voorwaarde zelf in te stellen in de body
Do While (voorwaarde = True)
...
Loop
wordt bij elke iteratie
uitgevoerd
![Page 43: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/43.jpg)
Programmeren in VBA > Selecties en iteraties
• Do While ... Loop
– Voorbeeld:
• Zoek het grootste getal
• Getal -1 dient om te stoppen
Dim iGrootste As Integer, iIngave As Integer
iIngave = InputBox("Geef een getal in: ")
Do While ( iIngave <> -1 )
If( iIngave > iGrootste ) Then
iGrootste = iIngave
End If
iIngave = InputBox("Geef een getal in: ")
Loop
![Page 44: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/44.jpg)
Programmeren in VBA > Selecties en iteraties
• Do While ... Loop
– Voorbeeld:
• Opmerking:
– Dubbele code!
Dim iGrootste As Integer, iIngave As Integer
iIngave = InputBox("Geef een getal in: ")
Do While ( iIngave <> -1 )
If( iIngave > iGrootste ) Then
iGrootste = iIngave
End If
iIngave = InputBox("Geef een getal in: ")
Loop
![Page 45: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/45.jpg)
Programmeren in VBA > Selecties en iteraties
• Do ... Loop While
– Voorbeeld:
• Opmerking:
– Dubbele code!
• Oplossing: Do ... Loop While
Dim iGrootste As Integer, iIngave As Integer
Do
iIngave = InputBox("Geef een getal in: ")
If( iIngave > iGrootste And iIngave <> -1 ) Then
iGrootste = iIngave
End If
Loop While ( iIngave <> -1 )
![Page 46: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/46.jpg)
Programmeren in VBA > Selecties en iteraties
• Do ... Loop While ...
– Doe zolang ...
– Structuur:
– Verschil met Do While ... Loop:
• Minstens één doorgang
Do
...
Loop While (voorwaarde = True)
wordt bij elke iteratie
uitgevoerd
![Page 47: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/47.jpg)
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 48: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/48.jpg)
Programmeren in VBA > Selecties en iteraties
• Do Until ... Loop
– Doe totdat ...
– Structuur:
– Verschil met Do While ... Loop:
• Andere stopvoorwaarde: 'zolang' ≠ 'totdat'
Do Until (voorwaarde = True)
...
Loop
wordt bij elke iteratie
uitgevoerd
![Page 49: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/49.jpg)
Programmeren in VBA > Selecties en iteraties
• Do Until ... Loop
– Equivalenten:
iTeller = 0
Do Until ( iTeller >= 6)
...
iTeller = iTeller + 1
Loop
iTeller = 0
Do While ( iTeller < 6)
...
iTeller = iTeller + 1
Loop
For iTeller = 0 To 5
...
Loop
For iTeller = 0 To 5 Step 1
...
Loop
iTeller = 0
Do
...
iTeller = iTeller + 1
Loop While ( iTeller < 6)
![Page 50: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/50.jpg)
Programmeren in VBA > Selecties
en iteraties
• Oefening 3: (kort)
– Hermaak oefening 2 met een
Do While ... Loop
– Testdata:
• 58 en 4
– Tip: oplossing in drie regels!
– Debug tip: als je PC hangt: CTRL+Break
![Page 51: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/51.jpg)
Programmeren in Excel VBA beginners – les 2
• Herhaling les 1
• Programmeren in VBA:
– Select Case
– Selecties en iteraties (vervolg)
• Het object Range
• Range > Verwijzen naar het juiste cellenbereik
• Programmeren in VBA:
– Selecties en iteraties (vervolg)
– Arrays
• Range > Opvullen en bewerken
![Page 52: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/52.jpg)
Programmeren in VBA > Arrays
• Arrays:
– = verzameling van dezelfde gegevens
– Bv. verzameling van Integers, Strings, Dates, Objects, …
– Elk element apart raadpleegbaar mbv. indexering
– ~ gewone variabelen:
• Moet gedeclareerd worden
– Unieke naam met beperkingen
– Afspraak: CamelCase en Hungarian notation
• Scope te bepalen:
– Private, Public of Dim
• Geen constanten mogelijk!
– http://www.ozgrid.com/forum/showthread.php?t=34314
![Page 53: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/53.jpg)
Programmeren in VBA > Arrays
• Arrays:
– Voorbeeld:
– Maakt een array aan van Strings
Dim arrLeden(1 To 5) As String
arrLeden
arrLeden(1)
arrLeden(2)
arrLeden(3)
arrLeden(4)arrLeden(5)
startpositie eindpositie
![Page 54: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/54.jpg)
Programmeren in VBA > Arrays
• Arrays:
– Voorbeeld:
– Maakt een array aan van Strings
joris
arrLeden
arrLeden(1)
Dim arrLeden(1 To 5) As String
arrLeden(1) = "joris"
![Page 55: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/55.jpg)
Programmeren in VBA > Arrays
• Arrays:
– Startpositie is instelbaar
– Dim arrLeden(1 To 100) As String
• Start vanaf 1
• Gaat van 1 t/m 100
– Dim arrLeden(100) As String
• Start vanaf 0
• Gaat van 0 t/m 100
Opgelet: staat fout in boek!
![Page 56: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/56.jpg)
Programmeren in VBA > Arrays
• Arrays – multi-dimensionaal:
– Voorbeeld:
– Maakt een array aan van arrays van Strings
arrLeden
Dim arrLeden(1 To 5, 1 To 3) As String
arrLeden(1)
arrLeden(2)
arrLeden(3)
arrLeden(4)
arrLeden(5)
![Page 57: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/57.jpg)
Programmeren in VBA > Arrays
• Arrays:
– Voorbeeld:
– Maakt een array aan van Strings
arrLeden
arrLeden(1,2)
Dim arrLeden(1 To 5, 1 To 3) As String
arrLeden(1,2) = "joris"
joris
![Page 58: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/58.jpg)
Programmeren in VBA > Arrays
• Arrays:
– Grootte later pas declareren:
– Nuttig wanneer je de grootte op voorhand niet kent
– Grootte heraanpassen lukt niet:
Dim arrLeden() As String
ReDim arrLeden(20) As String
Dim arrLeden(1 To 5) As String
ReDim arrLeden(20) As String
![Page 59: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/59.jpg)
Programmeren in VBA > Arrays
• Arrays:
– Opvragen van de grenzen:
• Ondergrens: LBound( array )
• Bovengrens: UBound( array )
• Voorbeeld:
Dim arrLeden(4) As String
Dim arrWerknemers(0 To 4) As String
MsgBox LBound( arrLeden )
MsgBox LBound( arrWerknemers )
MsgBox UBound( arrLeden )
MsgBox UBound( arrWerknemers )
![Page 60: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/60.jpg)
Programmeren in VBA > Arrays
• For Each … Next:
– Overlopen van een collectie
Dim vItem As Variant
For Each vItem In arrLeden
...
Next
wordt uitgevoerd voor elk
element in de collectie
Variant type verplicht
Collectie; bv. array
![Page 61: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/61.jpg)
Programmeren in VBA > Arrays
• For Each … Next:
– Voorbeeld
Dim vItem As Variant
Dim saOrdersInFactuur(3) As String
saOrdersInFactuur(0) = “beer”
saOrdersInFactuur(1) = “Lego”
saOrdersInFactuur(2) = “bal”
saOrdersInFactuur(3) = “GI Joe”
For Each vItem In saOrdersInFactuur
MsgBox vItem
Next
Toont in deze volgorde:
beer, Lego, bal en GI Joe
![Page 62: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/62.jpg)
Programmeren in Excel VBA beginners – les 2
• Herhaling les 1
• Programmeren in VBA:
– Select Case
– Selecties en iteraties (vervolg)
• Het object Range
• Range > Verwijzen naar het juiste cellenbereik
• Programmeren in VBA:
– Selecties en iteraties (vervolg)
– Arrays
• Range > Opvullen en bewerken
![Page 63: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/63.jpg)
• Maak een nieuw werkboek aan: les1_oef4_oplossing.xls
• Maak onderstaand Lotto formulier aan
• Gebruik een aparte, herbruikbare procedure:
– MaakLottoFormulier()
– Private toegang
– Parameters: startcel, aantal kolommen en aantal rijen
– Deze procedure roep je op via een publieke procedure
procMain()
• Oplossing:
Oefening 4a
![Page 64: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/64.jpg)
• Zorg ervoor dat de gebruiker via een knop getallen kan
aankruisen
• Maak hiervoor volgende procedures aan:
– public VoerGetalIn() �toont de InputBox
– private KruisAan() �kruist het getal aan
• Oplossing:
Oefening 4b
![Page 65: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/65.jpg)
• Uitbreiding:
– Zorg dat je procedure MaakLottoFormulier() meerdere
formulieren kan aanmaken
– Wanneer je nu op de knop “Kies getal” klikt, kan je ook het
formulier kiezen
Oefening 4c
![Page 66: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/66.jpg)
• Oplossing:
Oefening 4c
![Page 67: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/67.jpg)
Range > Opvullen & bewerken
• Opmerkingen bij de oplossing:
– Automatisch opvullen van groot bereik met For lus is niet efficiënt
– Beter: formule gebruiken
• Zie les1_oef3d_oplossing.xls
Slide op basis van cursus “Programmeren in Excel 2007 VBA” van Peter Demasure
formule = (rij-index * aantal_kolommen)
+ kolomindex
Bijvoorbeeld: (1 * 6) + 1 = 7
Opgelet: rekening houden met offset: je
start niet altijd op rij 1, kolom 1!
6 kolommen
kolomindex
rij-index
![Page 68: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/68.jpg)
Range > Opvullen & bewerken
• Opmerkingen bij de oplossing:
– Code herbruikbaar maken door ze in aparte procedures te steken
– Parameters:
• Optionele:
• Controleren of meegegeven is:
Private Sub test( param1 as Long, Optional param2 as Variant)
If ( IsMissing(param2) ) Then
param2 = “...”
End If
Slide op basis van cursus “Programmeren in Excel 2007 VBA” van Peter Demasure
![Page 69: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/69.jpg)
Programmeren in Excel VBA beginners – les 3
• Herhaling les 1 + 2
• Range > Rijen verwijderen
• Werkmappen en werkbladen
• Het object Application
• Event macro's
• Excel 2003 vs. 2007
![Page 70: Programmeren in Excel VBA beginners - .karelnijs.be v6.1karelnijs.be/Projects/OPENLEREN_Programmeren_in_Excel_VBA... · Programmeren in Excel VBA beginners –les 2 • Herhaling](https://reader034.vdocuments.net/reader034/viewer/2022042422/5a7973647f8b9a770a8bf7c3/html5/thumbnails/70.jpg)
Bedankt voor jullie aandacht!