IntelliSense mit Enumerationen

Die Ausgangslage

In Ihrem VBA-Code lagern Sie häufig verwendete Aufgaben in Prozeduren aus. Diesen Prozeduren teilen Sie die notwendigen Informationen über Parameter mit. Hierin liegt das Problem.

Es stellen sich folgende Fragen:

  • Welche Werte können für einen Parameter übergeben werden
  • Welcher Wert hat welche Bedeutung

Wenn Sie die Funktion gerade erst geschrieben haben, sind diese Fragen noch sehr leicht zu beantworten. Die Antworten haben Sie noch im Kopf. Wenn die Erstellung der Funktion aber schon etwas zurück liegt und Ihre Erinnerung dementsprechend verblasst ist, können Sie diese Fragen nur beantworten, wenn Sie einen Blick in den VBA-Code der Funktion werfen. Dort finden Sie dann (hoffentlich) einen ausführlichen Kommentar, der Ihnen die Wirkung der einzelnen Werte erläutert.

Welchen Weg geht Access

Es ist aufwändig und gegebenenfalls auch fehleranfällig, auf diesem Weg an die Informationen über Parameter zu gelangen. Spätestens jetzt werden Sie neidisch auf die in Access und VBA eingebauten Funktionen schauen. Wenn Sie eine solche Funktion eintippen, zeigt Ihnen der VBA-Editor mittels IntelliSense häufig eine Liste der möglichen Werte für einen Parameter an (s. Abb. 1).

Abb1.tif

Abb. 1: IntelliSense zeigt die möglichen Werte für einen Parameter an.

An dieser Stelle stellen Sie sich vielleicht folgende Fragen:

  • Wie macht der VBA-Editor das
  • Kann ich dieses Verhalten auch für meine selbst geschriebenen Prozeduren herbeiführen

Die Lösung liegt in der Antwort auf die erste Frage. Der VBA-Editor verwendet für die Realisierung dieser Funktionalität Aufzählungstypen, so genannte Enumerationen. Genau das ist auch die Lösung für Ihr Problem: verwenden Sie eine Enumeration.

Im ersten Schritt erstellen Sie eine Enumeration für die möglichen Elemente, die als Parameterwert übergeben werden können. Im zweiten Schritt deklarieren Sie dann den Parameter in Ihrer Funktion vom Typ Ihrer soeben definierten Enumeration.

Eine Enumeration erstellen …

Eine Enumeration ist schnell erstellt:

Public Enum fwcFarbWert
     fwcRot = 1
     fwcGrün = 2
     fwcBlau = 3
End Enum

… und verwenden

Die so definierte Enumeration können Sie jetzt bei der Deklaration Ihrer Funktion einem Parameter als Datentyp zuweisen.

Private Sub FarbeZuweisen(Farbe As fwcFarbWert)
     Dim lngFarbe As Long
     lngFarbe = Farbe
     ''...
End Sub

Wenn Sie jetzt einen Aufruf der Prozedur FarbeZuweisen in das Direktfenster eintippen, erhalten Sie IntelliSense-Unterstützung (s. Abb. 2).

Abb2.tif

Abb. 2: IntelliSense bei einer selbst definierten Funktion

Namensregeln für Enumerationen

Um den Namen für eine Enumeration festzulegen, suchen Sie einen Begriff, der den Inhalt Ihrer Aufzählung möglichst genau beschreibt. Für den Namen bietet es sich an, die Einzahl dieses Begriffs zu verwenden.

Die Enumeration zählt zwar eine Mehrzahl gleichartiger Elemente auf. Wenn Sie Ihre Enumeration aber später im Code verwenden, brauchen Sie nur einen Wert aus Ihrer Aufzählung. Das ist der Grund, warum der Name der Enumeration aus der Einzahl des Begriffs besteht.

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar