Beitragsseiten

1 1 1 1 1 1 1 1 1 1 Rating 5.00 (1 Vote)

Delegates in VBA? Delegates in VBA!

Ein Hinweis vorweg: Diese kleine Einführung erhebt absolut keinen Anspruch auf Vollständigkeit und Richtigkeit. Über Fehler-Hinweise und auch Feedback bin ich wie immer dankbar!

Alle Beispiele sind unter Windows XP mit Office XP und unter Windows 7 mit Office 2010 getestet!


Viele .NET-Programmierer, die sich mehr oder weniger zwangsläufig mit VBA beschäftigen, vermissen natürlich die ein oder andere Funktionalität.

Da ist zum Beispiel die Möglichkeit, nicht nur Werte, Variablen oder Objekte als Argumente an Funktionen zu übergeben, sondern ganze Funktionen bzw. deren Aufrufe. Die Rede ist von

Delegates

VBA selbst stellt augenscheinlich keine Delegates bereit. Wenn wir uns aber vor Augen halten, dass das gesamte Windows fast ausschließlich auf Ereignissen basiert und Ereignisse nur über Delegates realisiert werden können (wie sonst wüsste ein Programm, wenn Button A gedrückt wird, dass die Ereignisroutine von Button A ausgelöst werden soll und führt nicht die Routine von Button B aus? Es sind doch beide nur Abkömmlinge von der Klasse Button und es wird ja nicht für jeden Button ein eigenes Ereignis definiert, sondern jeder Button bekommt „nur“ für DAS Ereignis seine Ereignis-Routine [EventHandler]), dann muss es doch auch eine Möglichkeit geben, eigene Delegates zu realisieren.

Und natürlich gibt es die Möglichkeit, auch wenn VBA – als recht einfache Programmiersprache auch für Einsteiger konzipiert – keinen Datentyp für Delegates bereitstellt (wie z.B. C#). Also muss ein kleiner Umweg gegangen werden.

Hätten Sie's gewusst?

Angemeldete User können Kommentare verfolgen und bei Antworten auf Kommentare per Email benachrichtigt werden.

Wussten Sie's schon?

Für Kommentare und Fehlerhinweise bin ich Ihnen immer dankbar. Benutzen Sie hierfür bitte das Kontaktformular oder die Kommentar-Funktion des jeweiligen Beitrags - eine Anmeldung ist hierfür nicht erforderlich. Wollen Sie jedoch über Reaktionen zu Kommentaren per Email informiert werden, dann melden Sie sich bitte an.