VB(A): Eine „enum“ mit .count? Wo gibt’s denn sowas?

Nach langer Zeit mal wieder ein Tipp für Visual Basic for Applications (VBA). Eine Enumeration („enum“) ist sicher jedem VB-Entwickler bekannt. Manchmal ist es vielleicht nötig, diese in ihrer Gänze zu erfassen, weil man z.B. eine Statistik der auftauchenden Fehler anlegen möchte. Dann kann es hilfreich sein, vorab ein entsprechend großes Array zu dimensionieren, und die einzelnen Interger-Elemente dann bei Bedarf hochzuzählen. Doch wie groß sollte das Array sein?

Klar, eine Konstante mit der Dimension wäre eine Lösung. Die hat aber den Nachteil, dass ich jedesmal, wenn ich einen neuen Fehler hinzufüge, auch diese Konstante anpassen muss. Vergesse ich das … BUMM. Doch es geht einfacher: Lege einfach eine Eigenschaft wie „count“ als letztes Element der Enum an. Da die Enum automatisch mit 0 beginnend nummeriert wird, ist dieses „count“ dann zwangsläufig mit dem richtigen Wert vorbelegt.

Public Enum eProjectErrorNumbers
    ERR_INTERNAL                ' Internal error
    ERR_NO_FILE
    ERR_NO_PATH
    ERR_ABORTED
    ERR_ILLEGAL_VALUE
 
    count                       ' Must always be the latest entry!
End Enum

Im Beispiel bekäme ERR_INTERNAL also den Wert 0 zugewiesen, ERR_ILLEGAL_VALUE die 4 und count den Wert 5. Und — abgesehen von „count“ selbst haben wir genau 5 Elemente in der Enum. Und das passt immer, auch wenn wir Elemente hinzufügen. Hauptsache der „count“ ist immer das letzte Element und es wird keine direkte Wertzuweisung vorgenommen.

Dim statistik(eProjectErrorNumbers.Count - 1) As Integer

Dieses Array hat genau die Dimensionen wie die Enum, und es können sogar die Enums selbst als Index verwendet werden:

Debug.Print statistik(ERR_ABORTED)

SmallInvoice Logo

Ähnliche Artikel:

AuthorChristoph Jüngling

Selbständiger Softwareentwickler und Seminarleiter

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

drei + 13 =