Notities
Overzicht
VBA
Basiskennis
Events-Driven programmering
Procedurele programmering: Een programma loopt af in de volgorde waarin het geprogrammeerd is.
Events-driven (Actie-gestuurd) programmering. Een programma doorloopt verschillende delen van de code afhankelijk van de actie van de gebruiker, het systeem of andere programma’s.
VBA programma
Maak een interface
Schrijf code bij de betreffende events
voorbeeld met Form, controles, procedures
Test het programma
Hulp bij de ontwikkeling
Help menu met inhoud, index en wizard
Context gevoelige hulp (vb):
type een woord en toets F1
bij een foutmelding toets F1
Hulp in de Code editor (vb)
Type object en punt
Type functie en spatie
Controls voor formulieren
Zichtbaar maken Toolbox
intrinsiek of ActiceX controls
Dubbelklik tool of sleep naar formulier
Design time eigenschappen met
Properties window of Properties page
Runtime eigenschappen
instellen, opvragen in code
control . eigenschap
Procedures
Event procedures; aangeroepen door muisklik, toetsenbord, systeem of object.
Algemene procedures; Sub of Function procedures worden door het programma aangeroepen.
Function geeft resultaat,
Sub niet.
Argumenten van een procedure
Informatie wordt doorgegeven aan de procedure dmv variabelen; de argumenten.
ByVal; Een kopie wordt doorgegeven. De variabele kan niet gewijzigd worden.
ByRef; Een verwijzing wordt doorgegeven. De variabele kan gewijzigd worden. (standaard)
Scope van een procedure
Public procedures kunnen overal vandaan aangeroepen worden.
Private procedures kunnen alleen aangeroepen worden vanuit het formulier of de code waarin deze is gedefinieerd.
Controle structuur 1
For i=1 to 10
....
Next i
Do while i < 10
...
Loop
Controle structuur 2
If  i > 1 Then
....
Else
....
Endif
Select Case i
Case 1
.......
Case 2
.......
Case 3
......
End Select
Controle Structuur3
With ......
......
......
End with
Variabelen 1
Variabelen en constantes worden gebruikt voor onderhoudbaarheid en leesbaarheid.
Constantes veranderen niet variabelen wel.
Dim: bovenaan in module betekent de variabele is alleen bruikbaar in alle procedures van de module.
Dim in procedure betekent alleen bruikbaar in procedure.
Public: bruikbaar in alle procedures van alle modules van een project.
Static: alleen bruikbaar in de procedure, de waarde blijft bewaard.
Variabelen 2
Variabele kunnen oa getal, tekst, object data bevatten. As long (1,2,3) As Double (1.253), As String (“ÁBC”) As Object.
Als er geen type is aangegeven wordt dit een Variant. Een variant gebruikt meer geheugen en is trager. Als bovenaan Option Explicit aangegeven staat moeten alle variabele gedeclareerd zijn.
Constanten
Constanten worden gedefinieerd met CONS. Dit kan voorafgegaan worden door Public of Private.
Private: bruikbaar in alle procedures van de module.
Public: Gedefinieerd in de standaard  module zijn deze beschikbaar in alle procedures van alle modules.
Componenten
Componenten bevatten data en functies voor een bepaalde toepassing. Het kan wel of niet een interface hebben.
Bij het gebruik van het object wordt eerst een referentie gemaakt naar de code (type_library of applicatie), vervolgens wordt een kopie gemaakt (Set ... =...). Daarna kunt u de eigenschappen, methoden en events van het object gebruiken.
Collections
Een collectie is een object dat objecten van dezelfde klasse bevat. Collecties hebben de volgende eigenschappen of methoden.
Add: toevoegen
Remove: verwijderen
Item: object
Count:  aantal
U bewerkt alle objecten uit een collectie met:
For Each ... In ...
..........
Next
Debuggen
Plaats breakpoint in marge
Step into, over, out (F8, Sh+F8, Ctr+Sh+f8)
Watch window (Ook AutoCAD)
Immediate window
 Debug.print in code
? Variabele_naam in immediate window
Locals window
Fouten opvangen
Zet een val op voor fouten
On Error GoTo ....
Schrijf code voor foutafhandeling
Err.Number of Err.Description en Error.Clear Err.Raise nn geeft VBA foutwindow die hoort bij nn
Ga verder
Resume of Resume next
Alternatief
Inline foutafhandeling
On Error Resume Next
if Err.Number <> 0 then ....
Fout afhandeling opties
Tools > Options > General
Break on All Errors
On error wordt genegeerd.
Break in Class Module
Component geeft foutmelding
Break on Unhandled Errors
VBA geeft altijd een foutmelding