Excel VBA, Objectmodel



Snel op weg! Het Objectmodel, hoe werken de Objecten ?


Bij het gebruik van VBA is het nuttig (noodzakelijk) om op de hoogte te zijn van het objectgeoriënteerd denken. Waarom ?
  • Excel en ook de andere Office producten bestaan uit een aantal objecten.
  • Programmeren in VBA bestaat uit het manipuleren van deze objecten.
  • Het principe van objectoriëntatie kan ook worden toegepast om macro's voor andere Office producten te schrijven.
Wat is een object ?
  • Een object is een benoemd gedeelte uit het geheugen van een computer.
  • Het heeft kenmerken en eigenschappen, zoals bijvoorbeeld mensen met bruin haar of rood haar.
  • Het kent methodes. Mensen kunnen lopen en autos kunnen rijden. 
  • Objecten kunnen bestaan uit andere objecten
Een voorbeeld:
Nederland bevat objecten en objectverzamelingen. Het bevat objecten zoals "autos". Elke auto wordt uniek geïdentificeerd door een kenteken. De auto "XP 56 89" is onderdeel van de verzameling. Om de kleur te bepalen van deze specifieke auto moeten we schrijven:


Aarde.Landen(”Nederland”).Autos(”XP 56 89”).Kleur


We willen de auto laten bewegen. Beweeg de auto uit Nederland met kenteken ”XP 56 89” op de planeet "Aarde" 10 eenheden naar beneden en 10 eenheden naar links.
In VBA moet dit als volgt worden geschreven:


Aarde.Landen(”Nederland”).Autos(”XP 56 89”).Beweeg(10,10)


Welke objecten kennen we in Excel ?
  • Het "moederobject" is "Application".
  • Applicaties bevatten werkmappen.
  • Een werkmap bevat werkbladen.
  • De werkbladen bevatten bereiken.
  • Application, werkmappen, werkbladen etc bevatten allemaal objecten met eigenschappen en methodes.

Het benaderen van objecten?

Om een bepaald werkblad te benaderen schrijven we:


Application.Workbooks(”naam.xls”).Sheets(”Naam”)


en als we de naam van het werkblad niet weten kunnen we gebruik maken van een index:

Application.Workbooks(”naam.xls”).Sheets(1)

Om het werkblad een naam te geven schrijven we:

Application.Workbooks(”naam.xls”).Sheets(1).Name = ”MijnNaam”

Als een bepaalde werkmap als actief is kunnen we volstaan met:

Sheets(”Naam”)


Hierdoor wordt het werkblad in de actieve werkmap benaderd.
Binnen het werkblad kunnen we een bereik benaderen door:

Sheets(”Naam”).Range(”A1”)


Of een bereik in het actieve werkblad:

Range(”A1”)

Als aan een bereik een naam is toegekend kan je deze benaderen door:

Range(”Bereiknaam”)



Heb je nog vragen, neem dan gerust contact met ons op.