schauan (Andre Schau)
03.Juni 2012

Zeilennummern in Makros

lauffähig in allen Excel-Versionen

VBA_ZeilenNummern

In vielen Foren wird die Meinung geäußeret, dass die Verwendung von "On Error ..." in qualifiziertem Code nichts zu suchen hat. Fehler sind, bitteschön, durch entsprechende Programmierung abzufangen. Nun mag man das mit entsprechendem Aufwand auch erreichen. Die Frage ist, ob gerade bei professioneller Programmierung der Kunde diesen Aufwand auch bezahlt.
Bei Test und Einführung der Programme kann es von Interesse sein, den genauen Abbruchpunkt im Code zu erfahren. Nun muss man dafür den Anwender nicht in den Umgang mit dem VBA-Editor einweisen und andere Umstände bereiten. Hier würde eine Fehlermeldung mit Ausgabe der Zeile bzw. der Zeilennummer ausreichen. Sofern der code Zeilennummern enthält, können diese ausgegeben werden. Dazu müssen die Zeilennummern in den Code eingefügt werden. Das kann manuell oder mit entsprechenden Tools erfolgen. Die Anwendung eines Tools setzt den Zugriff auf das VBA-Projekt voraus.

Ich hab für die Zeilennummern eine Formellösung erstellt.

Zeilennummern hinzufügen

Zeilennummer hinzufügen

Man überträgt den code aus dem VBA-Editor zwischen sub.. und end sub in das Excelblatt in Spalte B ab Zeile 3 und holt dann die Zeilen aus Spalte A und B zurück in die Makros. Übernimmt man auch die erste Zeile - "Option Explicit" - ist die Zeilennummer dort zu entfernen." In A1 kann man eine Startzeilennummer eintragen. Das wäre z.B. für eine durchgängige Nummerierung der Zeilen für mehrere Makros von Interesse. Die Zeilennummerierung ist nicht in allen Zeilen zulässig, z.B.:
Zeilen außerhalb von Prozeduren
Start und Ende eines Sub bzw. einer Funktion
Dimensionierung
Folgezeilen
Kommentarzeilen
Das wird durch die Formellösung berücksichtigt. Die Sprungweite ist in der Formel auf 10 eingestellt. Bedingt durch die "unzulässigen" Zeilen entstehen in dieser Lösung Lücken in der Nummerierung. Formeltechnisch wäre eine durchgängige Lösung machbar.

Zeilen einrücken

Wenn man die Zeilen einrücken willst, kann man die Daten aus Spalte E verwenden. In D1 gibt man zuvor einen "globalen" Verschiebungswert ein und jeweils in D neben der codzeile noch einen nur die Zeile betreffenden Einrückwert. Mit negativen Werten kann man die Zeile gegenüber dem Original nach links rücken. Dann kopiert man die Daten nach Spalte B, dort aber nur Werte einfügen.

Zeilen einrücken

Zeilennummern entfernen

Will man die Zeilennummern wieder weg haben, holt man den code aus dem VBA-Editor wieder nach Spalte B. Es werden zwar wieder Zeilennummern in Spalte A erzeugt, aber in Spalte E steht der code ohne Nummern. Die Zeilennummern werden dabei in Spalte C abgetrennt.

Zeilennummer abtrennen

Die Formeln gehen bis Zeile 400. Ist der code mal länger, muss amn sie tiefer ziehen. Formeln sind in Spalte A, C und E - wie der Drink ;-)

Codeanalyse - verwendete Variablen

Weiter rechts hab ich dann noch eine "codeanalyse". Ist etwas hoch gegriffen der Begriff ;-) Ich prüf dort einfach, wie oft bestimmte Worte im code enthalten sind. Damit kann ich schnell feststellen, ob eine dimensionierte Variable auch verwendet wird. Du braucht man nur statt der dort stehenden seine eigenen Variablennamen einzusetzen.