HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Entdecke rund 2 Millionen Excel-Lösungen im
Forumsarchiv
Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Excel gut - VBA gut
Jürgen19
30.07.2026 15:40:30
AW: Max Anzahl Publich Variable
Hallo Zwenn

Es geht hier um ein Projekt mit zwei Dateien - eine mit allen Daten, eine mit allen Makros. Die Bearbeitung von Daten erfolgt ausschliesslich über UserForms, direkte Eingabe in einzelne Zellen gibt es nicht.

Eine Vorgabe bei der Entwicklung war, dass weitere Daten hinzukommen können. Beispiel: in einer Tabelle sind die Daten der Mitglieder gespeichert. Wir haben hier also Kolonnen "Anrede", "Vorname", "Name" in den Kolonnen 1,2 und 3, usw. Jetzt soll noch eine Kolonne für einen zweiten Vornamen hinzugefügt werden. Möglichkeit entweder eine neu Kolonne "Vorname 2" nach Kolonne "Vorname" oder hinter der letzetn Kolonne einfügen. Wird wie üblichereweise so adressiert
name = tabelle(*mitglieder").cells(zeile_mitglied, 3) ' 3 = Kolonne in der der Name steht

müssen alle folgenden Kolonnennummern angepasst werden. Und da geht garantiert die eine oder andere Anpassung schief.
Wird die neue Kolonnen am Ende eingefügt, sind Kolonnen "Vorname" und Kolonne "Vorname 2" unter Umständen nicht mehr gleichzeitig auf dem Bildschirm sichtbar. (Ausser du hast einen 2 Meter breiten Bildschirm).

Die Lösung: Alle Kolonnen werden benannt, z.B. Kopfzelle von Kolonne "Name" mit "z_mg_name". Im Initialisierungsmodul gibt es dann die Public Variable "k_mg_name", im Initialisierungscode steht dann k_mg_name=Range("z_mg_name").Column. Der oben angeführte Code sieht dann so aus:
name = tabelle(*mitglieder").cells(zeile_mitglied, k_mg_name)

Ganz egal, wie die Kolonnen herumgeschoben oder neue eingefügt werden, der Code ändert sicht nicht.

Die Namensgebung folgt einem festen Schema
Name der Zelle = "z" & Kürzel für Tabellenblat & Bezeichnung Kopfzeile
("z" für Zelle)
Name der Variablen= "k" & Kürzel für Tabellenblat & Bezeichnung Kopfzeile
("k" für Kolonne)
So ist auch nach Jahren klar, was die einzelnen Variablen bedeuten.
Genau genommen sind die Variablen hier Pseudokonstante.

Das System hat sich seit den Anfängen vor rund 10 Jaren bestens bewährt.

Gruss
Jürgen
Als Antwort auf diesen Beitrag
Zwenn
30.07.2026 12:49:30
AW: Max Anzahl Publich Variable
Hallo Jürgen,

Du kannst jedenfalls sehr viele Public-Variablen verwenden. Sie sind projektweit gültig, und wenn ein Modul an die Grenze für Variablendeklarationen stößt, könntest Du theoretisch ein weiteres Modul anlegen und dort munter weitere Public-Variablen deklarieren.

Sorry, ich kann nicht anders. Ich bin einfach neugierig, und die Frage ist wirklich nicht böse gemeint:
Für welche Art von Projekt braucht man 300 oder mehr Public-Variablen?

Allein 300 globale Variablen lassen auf ein sehr umfangreiches Projekt schließen. Hinzu kommen ja noch die lokalen Variablen innerhalb der Subs und Funktionen.

Das grundsätzliche Problem globaler Variablen ist, dass jede davon praktisch an jeder Stelle im Projekt verändert werden kann. Sobald irgendwo etwas knirscht, dürfte die Fehlersuche deshalb ausgesprochen schwierig werden. Bei 300 globalen Zuständen kann man doch kaum noch zuverlässig überblicken, welche Prozedur wann welche Variable setzt, verändert oder zurücksetzt. Ganz abgesehen von möglichen Seiteneffekten. Spätestens nach einer längeren Pause stelle ich mir das kaum noch zuverlässig überschaubar vor.

Falls es sich bei einem großen Teil Deiner 300 Public-Deklarationen eigentlich um Konstanten handelt, ist die Situation eine andere. Konstanten bilden keine veränderlichen Projektzustände ab und verursachen daher nicht dieselben Abhängigkeiten. Aber selbst 300 öffentliche Konstanten wären eine Größenordnung, bei der mich die Struktur des Projekts sehr interessieren würde.
Folgenachrichten
Antwort auf Beitrag erstellen
Bitte einen Anwendernamen ohne @ eingeben.
Bitte das Passwort eingeben.
Bitte eine gültige E-Mail-Adresse eingeben.
Bitte einen Betreff eingeben.
Weitere Optionen
Aktivieren, wenn die Frage/der Beitrag noch nicht beantwortet wurde und unter Listen > Offene Threads erscheinen soll.
Beispieldatei hochladen

Bitte einen Nachrichtentext eingeben.