Vraag:
Excel, VBA, Application.Caller
scheidingslijn
Antwoord:

Excel, Application.Caller (VBA)

Situatie:
Je hebt een werkblad met daarin "shapes". Aan iedere shape kun je een macro koppelen die na het aanklikken van de betreffende shape wordt uitgevoerd. Als de macro die moet worden uitgevoerd niet of slechts minimaal van elkaar verschilt je worden geconfronteerd met erg veel dubbel uitgevoerde code. Dit komt de onderhoudbaarheid van de vbacode niet ten goede.

Het zou dus erg nuttig zijn als de macro "zou weten" door welke shape verantwoordelijk is voor de aanroep. Afhankelijk van de herkenning van de "aanroepende" shape kunnen in één macro de juiste acties worden uitgevoerd. Door gebruikmaking van VBA "Application.Caller" kan dit worden bewerkstelligd.

Een voorbeeld van het gebruik is geïmplementeerd in de helpfunctie van het Clieop-sjabloon. De gebruikte code is hieronder weergegeven.

Sub OpenHelp()
  Dim Veldnaam As String

  Veldnaam = Application.Caller
  'Als de helptekst zichtbaar is, maak deze dan onzichtbaar.
  'Als de helptekst onzichtbaar is, maak deze dan zichtbaar.

  If ActiveSheet.Shapes("HelpGroep" & Veldnaam).Visible = msoFalse Then
     ActiveSheet.Shapes("HelpGroep" & Veldnaam).Visible = msoTrue
     ActiveSheet.Shapes("HelpGroep" & Veldnaam).ZOrder msoBringToFront
     ActiveSheet.Shapes("HelpBallon" & Veldnaam).Visible = msoTrue
     ActiveSheet.Shapes("HelpBallon" & Veldnaam).ZOrder msoBringToFront
     ActiveSheet.Shapes(Veldnaam).ZOrder msoBringToFront
  Else
     ActiveSheet.Shapes("HelpGroep" & Veldnaam).Visible = msoFalse
     ActiveSheet.Shapes("HelpBallon" & Veldnaam).Visible = msoFalse
  End If

End Sub

In bovenstaande VBA code wordt "context afhankelijke" help getoond. Voor de helptekst zijn aparte shapes aangemaakt ("HelpGroep" & KolomNaam, "HelpBallon" & KolomNaam) waarin de helpinformatie wordt weergegeven.Voor helpinformatie is in iedere kolom een afbeelding van een vraagteken opgenomen met een eigen naam. Aan ieder vraagteken is de macro "OpenHelp" gekoppeld. De Macro "OpenHelp" controleert welke shape verantwoordelijk is voor de aanroep en op basis hiervan wordt de juiste (kolom) helpinformatie (shapes) zichtbaar cq. onzichtbaar gemaakt.


Probeer het eens uit, en leer, steeds meer !

Naar boven . . .