Sub Sub: Een procedure die een reeks instructies uitvoert.
Dim Dim: Declareert een variabele.
Set Set: Wijst een object toe aan een variabele.
Cells Cells: Verwijst naar cellen in een werkblad.
Clear Clear: Verwijdert de inhoud van cellen.
Range Range: Verwijst naar een bereik van cellen.
Value Value: Geeft de waarde van een cel.
For For: Start een For-lus.
Application.VLookup Application.VLookup: Zoekt een waarde in een bereik.
If If: Start een If-voorwaarde.
Else Else: Geeft een alternatief voor een If-voorwaarde.
End If End If: Eindigt een If-voorwaarde.
Next Next: Eindigt een For-lus.
Formula Formula: Geeft de formule van een cel.
NumberFormat NumberFormat: Geeft het getalformaat van een cel.
VLookup VLookup: Zoekt een waarde in een bereik.
Function Function: Declareert een functie.
Do Do: Start een Do-lus.
Loop Loop: Eindigt een Do-lus.
While While: Start een While-lus.
Wend Wend: Eindigt een While-lus.
Select Case Select Case: Start een Select Case-structuur.
Case Case: Geeft een alternatief in een Select Case-structuur.
Exit Sub Exit Sub: Eindigt een Sub-procedure.
Exit Function Exit Function: Eindigt een functie.
On Error Resume Next On Error Resume Next: Negeert fouten en gaat verder met de volgende instructie.
With With: Start een With-blok.
End With End With: Eindigt een With-blok.
On Error GoTo 0 On Error GoTo 0: Herstelt de standaard foutafhandelingsroutine.
Sub ExtractUniqueVBAFunctionsWithExplanation()
Dim vbComp As Object
Dim codeText As String
Dim regex As Object
Dim matches As Object
Dim match As Object
Dim dict As Object
Dim ws As Worksheet
Dim key As Variant
Dim i As Integer
' Dictionary met VBA-functies en uitleg
Dim functionDescriptions As Object
Set functionDescriptions = CreateObject("Scripting.Dictionary")
functionDescriptions.Add "Sub", "Start van een subroutine"
functionDescriptions.Add "Function", "Definieert een functie die een waarde retourneert"
functionDescriptions.Add "Dim", "Declareren van een variabele"
functionDescriptions.Add "Set", "Toewijzen van een object aan een variabele"
functionDescriptions.Add "Cells", "Verwijzing naar cellen in een werkblad"
functionDescriptions.Add "Clear", "Verwijdert de inhoud van cellen"
functionDescriptions.Add "Range", "Verwijzing naar een celbereik"
functionDescriptions.Add "Value", "Leest of schrijft een celwaarde"
functionDescriptions.Add "For", "Start een lus"
functionDescriptions.Add "Next", "Einde van een For-lus"
functionDescriptions.Add "Application.VLookup", "Zoekt een waarde in een bereik"
functionDescriptions.Add "If", "Voorwaardelijke logica"
functionDescriptions.Add "Else", "Alternatief pad in een If-structuur"
functionDescriptions.Add "End If", "Einde van een If-structuur"
functionDescriptions.Add "Formula", "Schrijft een formule in een cel"
functionDescriptions.Add "NumberFormat", "Bepaalt de opmaak van een cel"
functionDescriptions.Add "VLookup", "Verticaal zoeken in een tabel"
functionDescriptions.Add "Do", "Start een Do-lus"
functionDescriptions.Add "Loop", "Einde van een Do-lus"
functionDescriptions.Add "While", "Voorwaarde in een lus"
functionDescriptions.Add "Wend", "Einde van een While-lus"
functionDescriptions.Add "Select Case", "Meerweg-keuze"
functionDescriptions.Add "Case", "Specifieke waarde binnen Select Case"
functionDescriptions.Add "Exit Sub", "Vroegtijdig stoppen van een subroutine"
functionDescriptions.Add "Exit Function", "Vroegtijdig stoppen van een functie"
functionDescriptions.Add "On Error Resume Next", "Fout negeren en verdergaan"
functionDescriptions.Add "With", "Efficiënte bewerking op een object"
functionDescriptions.Add "End With", "Einde van een With-structuur"
functionDescriptions.Add "On Error GoTo 0", "Schakelt foutafhandeling uit"
' Kies de module (pas de naam aan indien nodig)
Set vbComp = ThisWorkbook.VBProject.VBComponents("Module1")
' Haal de volledige code op uit de module
codeText = vbComp.CodeModule.Lines(1, vbComp.CodeModule.CountOfLines)
' Instellen van regex en dictionary
Set regex = CreateObject("VBScript.RegExp")
Set dict = CreateObject("Scripting.Dictionary")
' Regex patroon voor veelgebruikte VBA-commando's, functies en methoden
regex.Pattern = "\b(Set|Dim|For|Next|If|Else|End If|VLookup|Range|Cells|Formula|Value|NumberFormat|Clear|Application\.\w+|WorksheetFunction\.\w+|Function|Sub|Do|Loop|While|Wend|Select Case|Case|Exit Sub|Exit Function|On Error Resume Next|On Error GoTo \w+|With|End With)\b"
regex.Global = True
regex.IgnoreCase = True
' Zoek alle overeenkomsten in de code
If regex.test(codeText) Then
Set matches = regex.Execute(codeText)
For Each match In matches
If Not dict.Exists(match.Value) Then
dict.Add match.Value, 1
End If
Next match
End If
' Maak een nieuw werkblad aan voor de resultaten
On Error Resume Next
Set ws = ThisWorkbook.Sheets("VBA Functies")
If ws Is Nothing Then Set ws = ThisWorkbook.Sheets.Add
ws.Name = "VBA Functies"
ws.Cells.Clear
On Error GoTo 0
' Kopteksten
ws.Cells(1, 1).Value = "Unieke VBA Functies & Methoden"
ws.Cells(1, 2).Value = "Uitleg"
' Schrijf de resultaten weg
i = 2
For Each key In dict.Keys
ws.Cells(i, 1).Value = key
If functionDescriptions.Exists(key) Then
ws.Cells(i, 2).Value = functionDescriptions(key)
Else
ws.Cells(i, 2).Value = "Geen uitleg beschikbaar"
End If
i = i + 1
Next key
' Opruimen
Set regex = Nothing
Set dict = Nothing
Set vbComp = Nothing
Set functionDescriptions = Nothing
End Sub