Home
 Inleiding
Wat is VBA?
 Visual Basics
 Macrorecorder
 VB-Editor
Praktijk
 Object Ref.
 Voorbeelden
 Problemen































Visual Basics

Objectmodel

Visual Basic is een 3e-generatie programmeertaal, wat wil zeggen dat je er programma's mee maakt die tegen het besturingssysteem - in ons geval Windows - zeggen wat ze gedaan willen krijgen. Het besturingssysteem vertaalt die instructies naar 'machinetaal'. Om dit gedaan te krijgen hanteert Windows het Object-model waarin alle manipuleerbare Objecten van een toepassing in Collecties zijn ondergebracht.
Het Application-object is bijvoorbeeld het allerhoogste object van een toepassing, het Parent-Object. De Application-Collectie van Word bestaat onder andere uit de Documents-collectie, waarin zich alle geopende documenten bevinden, en het Selection-object, welke de op dat moment in Word geselecteerde tekst vertegenwoordigt. Documents en Selection zijn zodoende Child-Objecten van het Application-object. Kijk bij Object Reference voor een uitgebreider overzicht van veelgebruikte objecten.

Eigenschappen, Methoden en Argumenten

Objecten kunnen gemanipuleerd worden door middel van hun Eigenschappen. Verwijzingen naar object-eigenschappen zien er als volgt uit:
Selection.Text  verwijst naar de string, ook wel tekenreeks genoemd, die op dat moment geselecteerd is. Als de cursor knippert, en er dus geen tekst geselecteerd is, verwijst hij naar het teken na de cursor.
Selection.Font.Name  verwijst naar de naam van het lettertype van de selectie.

Functies van Word, zoals zoeken, kopiëren, bladeren, afdrukken, etc., kunnen in Basic worden gebruikt omdat het Methoden zijn van Word-objecten. Naar methoden wordt op een vergelijkbare manier verwezen:
Application.Move  verplaatst het Word-venster.
ActiveDocument.Close  sluit het huidige document.
ActiveDocument.CheckSpelling  start de spellingscontrole voor het huidige document.
Selection.Copy  kopieert de selectie naar het klembord.

Een methode wordt vergezeld van parameters: Waarheen verplaatsen? Opslaan alvorens te sluiten? De parameters worden Argumenten genoemd. Er zijn vereiste argumenten en optionele argumenten. Optionele argumenten hebben een standaardwaarde welke wordt gebruikt als het argument niet in de instructie wordt opgenomen.
Argumenten kunnen op verschillende manieren aan een methode worden toegevoegd. Als voorbeeld gaan we de cursor naar rechts verplaatsen:

Selection.MoveRight(Unit, Count, Extend)

Het argument Unit vertelt op welk niveau naar rechts moet worden bewogen: Teken, woord, zin, alinea, pagina. Met Count wordt het aantal Units aangegeven en Extend geeft aan of de cursor een selectie maakt tijdens het bewegen. Je gebruikt deze methode dus als je de cursor naar een andere plek wilt brengen, maar ook om een selectie te maken.

Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdMove
In dit voorbeeld worden de standaardwaardes van de argumenten gebruikt welke alledrie optioneel zijn. Deze doen dus precies hetzelfde.
Selection.MoveRight
Selection.MoveRight Unit:=wdCharacter
Selection.MoveRight Unit:=wdCharacter, Count:=1
De naam van het argument hoeft niet per se in de instructie te worden vermeld. Deze wordt daardoor wel leesbaarder.
Selection.MoveRight wdCharacter, 1, wdMove
Een ander voordeel van het vermelden van argumentnamen is dat argumenten kunnen worden overgeslagen tijdens het benoemen. Een teken naar rechts selecteren:
Selection.MoveRight Unit:=wdCharacter, Extend:=wdExtend
Zonder argumentnamen moet dat als volgt; er wordt een extra komma gebruikt:
Selection.MoveRight wdCharacter, , wdMove
In sommige gevallen moeten de argumenten tussen haakjes worden geplaatst.

Voor help over specifieke argumenten kun je met de cursor in de methode gaan staan en daar met F1 help over opvragen.

Instructies

Een VB-programma is dus opgebouwd uit zogeheten Instructies. Die instructies kunnen variabelen benoemen, object-eigenschappen manipuleren, methoden gebruiken, routines uitvoeren en zijn gebundeld in een Procedure.
Sub Macronaam()
instructie
instructie
End Sub
Er zijn drie soorten instructies:
  • Declaratie-instructies benoemen variabelen en hun gegevenstype (string of numeriek).
  • Toewijzingsinstructies stellen eigenschappen in of wijzen die toe aan een variabele.
  • Uitvoerbare instructies voeren methoden uit of lussen.
  • Variabelen dienen als tijdelijke opslagplaats voor bijvoorbeeld object-eigenschappen. In de ene instructie kun je bijvoorbeeld opvragen hoeveel documenten er geopend zijn en dat aantal in een numerieke variabele stoppen om in de andere instructie evenzoveel keer een lus uit te voeren:

    Sub Wegwezen()
    Dim Variabele As Integer    ' Declaratie
    Variabele = Documents.Count ' Toewijzing
    For X = 1 To Variabele      ' Lus
        ActiveDocument.Save
        ActiveDocument.Close
    Next X
    Application.Quit
    End Sub

    Functies

    Een functie is een soort mini-programma dat wordt gebruikt in een instructie. De VBA-bibliotheek bevat een uitgebreide set functies om bijvoorbeeld een stuk tekst (tekenreeks) te bewerken. Zie de voorbeelden voor meer informatie over "ingebouwde" functies. Functies kun je ook zelf maken als procedure:
    Public Function WeekNummer(dDatum As Date) As Integer
    WeekNummer = Format(dDatum, "ww", vbMonday, vbFirstFourDays)
    End Function
    Aan de functie wordt het argument dDatum meegegeven. De instructie gebruikt de ingebouwde functie Format om uit de meegegeven dDatum het WeekNummer te filteren. Door de functie Public te declareren, kan de functie vanuit iedere module worden aangeroepen met bijv.:
    Sub ToonWeeknummer()
    MsgBox WeekNummer(Now())
    End Sub
    WeekNummer krijgt de huidige datum om het huidige weeknummer te tonen in een messagebox.

    Lussen

    If...Then...Else
    Controleren of aan een bepaalde voorwaarde wordt voldaan en afhankelijk daarvan een bepaalde reeks instructies uitvoeren.
    If Variabele <> 0 Then
        For X = 1 To Variabele
            ActiveDocument.Save
            ActiveDocument.Close
        Next X
    End If

    Do While...Loop
    Loopen zolang aan een voorwaarde wordt voldaan.
    Do While Documents.Count <> 0
        ActiveDocument.Save
        ActiveDocument.Close
    Loop
    of:
    Do Until Documents.Count = 0
        ActiveDocument.Save
        ActiveDocument.Close
    Loop
    of:
    Do
        ActiveDocument.Save
        ActiveDocument.Close
    Loop Until Documents.Count = 0

    For...Next
    Een opgegeven aantal keer loopen.
    For X = 1 To Documents.Count
        ActiveDocument.Save
        ActiveDocument.Close
    Next X