voorbeeldbestand
VBEditor Excel: Projektverkenner

De projektverkenner in de Excel VBEditor

Wat mij opvalt aan de projektverkenner in de VBEditor is, dat alleen de geladen VBprojekten (workbooks) met de codemodules (van het werkboek, van werkbladen, userforms, macromodules en/of klassemodules) in ieder projekt zichtbaar zijn.
De declaraties, macro's, funkties en gebeurtenissen - waar het in de VBEditor toch om draait - , verschijnen daarin niet.
Die moet je -heel onhandig- vanuit diverse comboboxen tevoorschijn toveren.

Daardoor ontbreekt het overzicht van alle VBA-code in een bepaald VBprojekt (werkboek).
Ook is niet duidelijk of bepaalde code recursief is (zichzelf aanroepend) of circulair (elkaar wederzijds aanroepend).

De bijlage bevat een userform dat probeert die tekortkomingen op te vangen.

Omdat een declaratiegebied, macro, funktie of eventcode geen VBA object is, moeten ze via allerlei tekstbewerkingen uit de tekst van iedere codemodule gedestilleerd worden.
Dat is tot op zekere hoogte te doen; het wordt pas echt lastig als je ook aangeroepen macro's / funkties wil inventariseren.
Aangeroepen macro's / funkties zijn nl. qua tekst nauwelijks te onderscheiden van bijv. variabelen.

Ook hieruit blijkt dat als je voor macro's en funkties een onderscheidende naamgeving hanteert de betrouwbaarheid van de inventarisatie, en ook de leesbaarheid van de code vergroot wordt.

Beschrijving van het userform

Het userform bevat 3 objecten:

- een Treeview met de totale VBA-struktuur van ieder projekt
- een Textbox met de code van een aangeklikte macro / funktie/ declaratiegebied in de listview
- een Imagelist met de iconen die de treeview gebruikt. De imagelist is in het userform verborgen achter de treeview.

Van ieder geladen VBprojekt verschijnt in de Treeview

nivo 1
- de projektnaam

nivo 2
- de macromodules in het VBProjekt

nivo 3
- de declaraties in een codemodule
- de macro's in iedere codemodule
- de funkties in iedere codemodule
- de property methoden (Let, Get, Set) in een klassemodule

nivo 4
- welke funkties worden aangeroepen in iedere macro
- welke macro's worden aangeroepen in iedere macro
- welke funkties worden aangeroepen in iedere funktie
- welke macro's worden aangeroepen in iedere funktie
- welke funkties/macro's recursief zijn

nivo 5
- keten van gekoppelde macro's/funkties per aangeroepen macro
- keten van gekoppelde macro's/funkties per aangeroepen funktie in iedere macro
- welke macro's circulair worden aangeroepen
- welke funkties circulair worden aangeroepen

Iconen en Markeringen

Declaraties

- een declaratiegebied krijgt als icoon een zwarte D

Projekten, werkboeken, werkbladen, userforms, codemodules, klassemodules

- de iconen van deze objecten komen zoveel mogelijk overeen met de iconen uit de Projektverkenner van de VBEditor.

Macro's

- macro's krijgen als icoon een enkele groene pijl
- aangeroepen macro's zijn weergegeven met een dubbele groene pijl
- recursieve macro's bevatten de aanduiding (recursief) achter de macronaam
- eventmacro's worden weergegeven met een blauwe pijl
- circulaire macro's hebben een rode dubbele pijl en de aanduiding (circulair) achter de macronaam

Funkties

- funkties krijgen als icoon een enkele blauwe f
- aangeroepen funkties worden weergegeven met een dubbele blauwse f
- recursieve funkties krijgen de aanduiding (recursief) achter de funktienaam
- circulaire funkties hebben een rode dubbele f en de aanduiding (circulair) achter de funktienaam

Kortom

Het userform in de bijlage is niet alleen beschrijvend - welke soorten VBA code zitten in ieder projekt - maar ook analyserend:

- welke macro's roepen andere macro's / funkties aan
- welke macro's / funkties zijn recursief
- welke macro's / funkties zijn circulair.