Normaler Name vs. Codename in Excel-VBA

Über den Unterschied zwischen dem „normalen“ Namen und dem „Codenamen“ in VBA und warum wir bei der Programmierung lieber die „Codenamen“ verwenden sollten.

Wir kennen es aus so gut wie jedem VBA-Projekt: Irgendwann kommt der Punkt, an wir auf Zellen in bestimmten Arbeitsblättern zugreifen müssen – sei es, um Werte aus bestimmten Zellen als Eingabe/Ausgabe für das Programm zu nutzen oder um gezielt per VBA Formatierungen im Arbeitsblatt zu verändern.

Dafür bietet Excel VBA verschiedene Möglichkeiten, u.a. können wir mit der Worksheets-Auflistung arbeiten, in der sämtliche Arbeitsblätter der aktuellen Arbeitsmappe verfügbar sind. Stellt sich die Arbeitsmappe mit ihren Arbeitsblättern z.B. wie in der nachfolgenden Abbildung dar, gehen wir (…und übrigens auch der Makrorekorder…) intuitiv wie folgt vor:

Worksheets(„Rohdaten“).Range(„A22“) = „Hallo Welt“

„Rohdaten” ist dabei der „normale“ Name der Tabelle, den auch die Benutzer*innen der Arbeitsmappe verwenden. Es gibt aber auch noch einen anderen, internen Namen des Arbeitsblatts, auch „Codename“ genannt, der nur in der VBA-Entwicklungsumgebung sichtbar ist:

Im Projektexplorer können wir sehen, dass jedes Worksheet zwei Namen hat: Einmal den „normalen“ Namen auf der rechten Seite („Rohdaten“) und einmal den „Codenamen“ auf der linken Seite (hier „Tabelle1“). Der „Codename“ lässt sich über das Eigenschaftsfenster vollkommen unabhängig vom „normalen Namen“ ändern:

Die alles entscheidende Frage: Warum beschäftigen wir uns überhaupt mit dem internen bzw. „Codenamen“ eines Worksheets? Warum verwenden wir bei der Programmierung mit VBA nicht einfach immer den „normalen“ Namen?

Es gibt zwei entscheidende Nachteile bei der Verwendung des „normalen“ Namens:

Zum einen könnten die Benutzer:innen der Excel-Arbeitsmappe auf die Idee kommen, dass das Arbeitsblatt nun nicht mehr „Rohdaten“ heißen soll sondern z.B. „Rohdaten 2021“. Schon funktionieren VBA-Programme bzw. Makros nicht mehr, da solche Umbenennungen an VBA vorbeigehen. Wir müssten unsere Programme also nach jeder Umbenennung eines Arbeitsblatts auf den neuen Namen anpassen. Das ist weder cool noch für die Anwender:innen logisch und auf jeden Fall immer gut für einen Anruf nach dem Motto: „Die XY-Mappe geht mal wieder nicht, ich habe aber nichts Besonderes gemacht…“

Abhilfe schafft die Verwendung des „Codenamens“ des Arbeitsblattes: Wenn wir unseren Zellzugriff in der Form

tbl_RawData.Range(„A22“) = „Hallo neue Welt“

codieren, ist der „normale“ Name des Arbeitsblatts vollkommen egal, da können die Benutzer:innen nun machen was sie wollen. Der interne Name bleibt immer gleich:

Ein zweiter großer Vorteil bei der Verwendung des „Codenamens“ ist die Tatsache, dass damit auch die AutoVervollständigen-Funktion richtig arbeitet (was bei der anderen Schreibweise mit dem „normalen“ Namen definitiv nicht der Fall ist – probieren Sie es gerne aus!)

Ich bin sicher, dass auch Sie nach diesem kleinen Experiment zukünftig die „Codenamen“ verwenden möchten, um Ihre VBA-Programme gleichzeitig leichter entwickeln und weniger fehleranfällig gestalten zu können. Es gibt – abgesehen von einem minimalen Mehraufwand für die Vergabe eines vernünftigen „Codenamens“ für die Worksheets – nur Vorteile. Versprochen!

Weitere IT-Kurse