Excel VBA bestaat uit meerdere ingebouwde objecten, zoals bijvoorbeeld het object Workbook. Dit object bestaat weer uit eigenschappen, methodes en gebeurtenissen. Voorbeelden van deze elementen zijn respectievelijk 'het aantal werkbladen', 'het sluiten van het werkboek' en het uitvoeren van instructies 'bij het openen van een werkboek'.
In VBA kan de programmeur zelf een object maken met behulp van een klassenmodule.

Module
'-----------------------------------------------------------------------------------------------------------------------
' Auteur : pascalterheege.nl
' Datum : 31-12-2015
' Object : modPersoon
' Doel : persoonsgegevens lezen en schrijven
' Verwijzing : zie klasse
' Bron :
'-----------------------------------------------------------------------------------------------------------------------
Option Explicit
Dim Persoon As clsPersoon
'-----------------------------------------------------------------------------------------------------------------------
' Datum : 31-12-2015
' Type : Subroutine
' Opmerking : klassenmodule initialiseren, procedures uitvoeren en klassenmodule sluiten
'-----------------------------------------------------------------------------------------------------------------------
Sub Plaatsen()
Set Persoon = New clsPersoon
Lezen
Schrijven
Set Persoon = Nothing
End Sub
'-----------------------------------------------------------------------------------------------------------------------
' Datum : 31-12-2015
' Type : Subroutine
' Opmerking : persoonsgegevens laden a.d.h.v. ID (invoeren door gebruiker)
'-----------------------------------------------------------------------------------------------------------------------
Sub Lezen()
Dim intID
Do
intID = InputBox("Geef het persoons-id op")
Loop Until IsNumeric(intID)
Persoon.ID = intID
End Sub
'-----------------------------------------------------------------------------------------------------------------------
' Datum : 31-12-2015
' Type : Subroutine
' Opmerking : persoonsgegevens plaatsen in het actieve werkblad
'-----------------------------------------------------------------------------------------------------------------------
Sub Schrijven()
[B1] = Persoon.ID
[B2] = Persoon.Voorletter
[B3] = Persoon.Voornaam
[B4] = Persoon.Achternaam
[B5] = Persoon.Geboortedatum
End Sub
Klassenmodule
'-----------------------------------------------------------------------------------------------------------------------
' Auteur : pascalterheege.nl
' Datum : 31-12-2015
' Object : clsPersoon
' Doel : persoonsgegevens uit een Access database halen a.d.h.v. ID
' Verwijzing : activeX Data Objects 2.8
' Bron :
'-----------------------------------------------------------------------------------------------------------------------
Option Explicit
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Private pID As Integer
Private pVoorletter As String
Private pVoornaam As String
Private pAchternaam As String
Private pGeboortedatum As Date
'-----------------------------------------------------------------------------------------------------------------------
' Datum : 31-12-2015
' Type : Constructor
' Opmerking : database en recordset initialiseren
'-----------------------------------------------------------------------------------------------------------------------
Private Sub Class_Initialize()
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
With cn
.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " & ActiveWorkbook.Path & "\Persoon.accdb"
.Open
End With
End Sub
'-----------------------------------------------------------------------------------------------------------------------
' Datum : 31-12-2015
' Type : Property
' Parameter : Waarde
' Opmerking : persoonsgegevens inlezen a.d.h.v. ID
'-----------------------------------------------------------------------------------------------------------------------
Public Property Let ID(Waarde)
pID = Waarde
With rs
.Open "Select * from tblPersoon where ID = " & ID, cn
If rs.EOF = False Then
pVoorletter = .Fields("Voorletter").Value
pVoornaam = .Fields("Voornaam").Value
pAchternaam = .Fields("Achternaam").Value
pGeboortedatum = .Fields("Geboortedatum").Value
Else
MsgBox "Persoon met ID " & ID & " is niet gevonden!", vbCritical
End
End If
End With
End Property
'-----------------------------------------------------------------------------------------------------------------------
' Datum : 31-12-2015
' Type : Property
' Opmerking : waarden teruggeven
'-----------------------------------------------------------------------------------------------------------------------
Public Property Get ID()
ID = pID
End Property
Public Property Get Voorletter()
Voorletter = pVoorletter
End Property
Public Property Get Voornaam()
Voornaam = pVoornaam
End Property
Public Property Get Achternaam()
Achternaam = pAchternaam
End Property
Public Property Get Geboortedatum()
Geboortedatum = pGeboortedatum
End Property
'-----------------------------------------------------------------------------------------------------------------------
' Datum : 31-12-2015
' Type : Destructor
' Opmerking : recordset en database sluiten
'-----------------------------------------------------------------------------------------------------------------------
Private Sub Class_Terminate()
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
Download hier het oefenbestand.
