Zählermarke der VG Wort Übersicht · Array()-Funktion · Arrays im VBA-Code · Arrays in Excel · Allgemeines

Arrays in VBA

Die Arrays in VBA sind mäßig dokumentiert und entsprechend selten findet man diese Funktionen im Code oder in Beispielen. Der folgende Beitrag soll das ein wenig ändern und ein paar Anwendungsbeispiele zeigen. Arrays sind Konstrukte, die in allen Programmen zur Verfügung stehen, die Visual Basic for Applications (VBA) anbieten, also alle Office-Programme und auch CorelDraw. Daneben können bestimmte Array-Konstrukte auch in VBS und HTA (VBS in HTML-Seiten, die der Internet-Explorer ausführt) genutzt werden, in diesen Sprachderivaten gibt es allerdings Arrays nur als Variant-Typ. Die wesentlich besseren Methoden von Visual Basic (VB) werden in diesem Beitrag nicht betrachtet.

Die folgenden Beispiele wurden mit Excel erarbeitet und sollen zeigen, wie man mit Arrays arbeiten kann. Arrays werden in der Excel-Dokumentation auch Felder oder Datenfelder genannt, die einzelnen Plätze im Array sind Elemente. Im Folgenden werde ich das Array auch als Struktur bezeichnen, die in unterschiedlichen Gewändern erscheinen kann.

In VBA gibt es mehrere Konstrukte:

  1. Eine Variable vom Typ Variant, die eine der folgenden Array-Strukturen (b), (c) wie ein Container enthält bzw. umhüllt.

  2. Eine Variable in Array-Struktur, wobei jedes Element des Arrays genau den gleichen Basis-Datentyp (Integer, String, …), Objekttyp oder benutzerdefinierten Datentyp hat

  3. Eine Array-Struktur, wobei jedes Element des Arrays vom speziellen Datentyp Variant ist und somit jedes Element des Arrays einen anderen Datentyp oder (verschachtelt) eine eigene Array-Struktur enthalten kann.

  4. Die Funktion Array(), mit der im Quellcode Array-Strukturen in der Art von (c) angelegt werden können, wobei jedes Element vom Variablentyp Variant ist.

Diese Konstrukte sind teilweise sehr unterschiedlich und funktionieren etwas eigenartig oder auch gar nicht, wenn man die Details nicht beachtet.

Der Speicherplatzbedarf wird in der VBA-Hilfe ausführlich beschrieben, er ist bei Variant-Typen am größten. Werden numerische Werte gespeichert, so braucht ein Variant-Element 16 Bytes, ein Double-Element nur die Hälfte. Normalerweise sollten typisierte Arrays auch eine schnellere Bearbeitung zulassen, doch das habe ich nicht weiter untersucht.

Weitere Hinweise auf Unterschiede oder Vorteile habe ich in der VBA-Hilfe nicht gefunden. Aus anderen Programmiersprachen ist bekannt, dass Arrays mit einer anfangs festgelegten Größe einen schnellen Zugriff auf die Inhalte ermöglichen, vermutlich wird auch VBA diese Vorteile mitbringen.

In vielen Programmiersprachen lassen sich Konstanten über ein Array/Feld zusammenfassen und können so als Tabelle im Code stehen. Auch VBA kann das, aber leider nur mit einer großen Einschränkung: Arrays können nicht im Deklarationsteil des Moduls stehen, denn sie werden nicht als Konstanten angesehen, auch wenn sie wirklich nur konstante Werte enthalten.

Wichtiger Hinweis zu den Codebeispielen: Da HTML kein Seitenformat kennt, kann es je nach Darstellung sein, dass Codezeilen einen Umbruch zeigen, obwohl im VBA-Quellcode keiner vorgesehen war. Die Übernahme könnte dann zu einem Fehler führen. Absichtlich umgebrochene Code-Zeilen enden mit einem Unterstrich (_).

Inhalt

Da mein Beitrag sehr umfangreich ist, habe ich verschiedene Themenbereiche zusammengestellt:

Zu allen Beiträgen habe ich zahlreiche Beispiele in VBA erstellt, um auch Ideen für eine nützliche Anwendung zu geben.