Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Excel gut - VBA gut
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