Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: nicht benutzte Variablen löschen

nicht benutzte Variablen löschen
28.04.2016 12:07:06
Pepi
Hallo zusammen
Kennt jemand eine Möglichkeit, nicht benutzte Variablen zu erkennen, damit diese gelöscht werden können und der Code übersichtlicher wird.
Ich habe im Web nur Hinweise auf Drittsoftware gefunden.
mfg
Pepi

Anzeige

26
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Strg + F
28.04.2016 12:24:23
Matthias
Hallo
Einfach im VBE nach dieser Variable suchen!(Strg+F) im ganzen Projekt suchen.
Ist dort nur die Daklaration vorhanden und kein weiterer Eintrag,
so brauchst Du sie nicht und kannst sie löschen.
Oder Du kommentierst sie erstmal nur aus (Hochkomma davorsetzen)
Gruß Matthias

Anzeige
AW: Die Idee mit dem Hochkomma
28.04.2016 12:36:55
Daniel
ist super.
einfach die Deklaration auskommentieren und das Makro starten, dann sagt dir VBA sofort, ob du die Variable löschen kannst oder ob sie noch verwendet wird.
(setzt natürlich voraus, dass mit Option Explicit gearbeitet wird, aber das sollte ja Standard sein.)
Gruß Daniel

Anzeige
...Oder nur Debuggen bei auskommentierter ...
28.04.2016 12:55:29
Luc:-?
…Deklaration, Daniel, Matti & Pepi,
dann wird, Option Explicit natürlich vorausgesetzt, die 1.Verwendungsstelle sofort markiert.
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: ...Oder nur Debuggen bei auskommentierter ...
28.04.2016 13:10:42
Daniel
sorry Luc, aber welche neue Information bringt uns dein Beitrag?
oder fasst du wieder mal nur zusammen, was andere schon vor dir gesagt haben, damit du auch einen Grund hast, mal wieder einen Beitrag schreiben zu schreiben?
Gruß Daniel

Debuggen hat doch ...
28.04.2016 13:16:56
Rudi
Hallo,
noch keiner vorher vorgeschlagen.
Gruß
Rudi

Anzeige
AW: Debuggen hat doch ...
28.04.2016 13:33:49
Daniel
zum Debuggen musst du das Makro starten...
Gruß Daniel

nö!
28.04.2016 13:40:42
Rudi
hallo,
man kann auch auf Debuggen klicken.
Gruß
Rudi

AW: nö!
28.04.2016 14:04:43
Daniel
und was passiert wenn du auf Debuggen klickst?
Gruß Daniel

Anzeige
was passiert, ....
28.04.2016 14:33:25
Rudi
... ist mir egal.
Auf jeden Fall wirkt sich der Klick auf das gesamte Projekt aus und nicht nur auf eine Prozedur.
Gruß
Rudi

AW: was passiert, ....
28.04.2016 14:36:02
Daniel
Makros mit Parameterübergabe kannst du auch nicht "debuggen".
die musst du auch wie üblich starten.
wenn für diesen Test das Makro nicht durchlaufen werden soll, kann man ja einen Haltepunkt auf den ersten Befehl setzen oder ein STOP als erste Befehlszeile temporär einfügen.
Gruß Daniel

Anzeige
AW: was passiert, ....
28.04.2016 15:16:01
Rudi
Hallo,
Makros mit Parameterübergabe kannst du auch nicht "debuggen".
Quatsch!
Wenn ich in einem Makro mit Parameterübergabe eine nicht deklarierte Variable habe, wird das angemeckert.
Gruß
Rudi

Ist ja auch wurscht...
28.04.2016 15:28:55
Daniel
wer ein Makro "debuggt" um Fehler vom System aufgezeigt zu bekommen, muss es irgendwie starten.
ob man das jetzt gleich im Einzelstepmodus macht oder an bestimmten Stellen Haltepunkte oder Abbruchbefehle wie Stop , Exit Sub oder End einfügt damit der Code nicht vollständig durchlaufen wird, ist doch nebensächlich.
Solange du den Makrolauf nicht startest, wird dir der Interpreter/Compiler keine Fehler anzeigen.
Gruß Daniel

Anzeige
Da irrst du, ...
28.04.2016 15:39:55
Luc:-?
…Daniel,
aber ich hatte mich nicht ganz eindeutig ausgedrückt, konnte ja nicht wissen, dass einer wie du das nicht kennt. Ich meinte den VBE-Kopf-Button Debuggen und im Menü dann den 1.Pkt → Kompilieren von VBAProject !
Denke, Rudi hatte das auch so verstanden… ;-]
Luc :-?

Anzeige
exakt so! owT
28.04.2016 15:43:29
Rudi

AW: ok, das hatte ich jetzt so nicht auf dem Schir
28.04.2016 16:07:53
Daniel
Schirm
sag halt gleich richtig was du meinst, dann versteht man dich auch.´
das Menü braucht man eigentlich nicht, weil die meisten der Befehle ja auch über die entsprechende Symbolleiste erreichbar sind (bis eben auf das Kompilieren)
Gruß Daniel

Tja, dein Pech, Rudi hat's ja auch verstanden! ;-)
28.04.2016 16:24:15
Luc:-?
:-?

Anzeige
AW: jaja, immer sind die anderen Schuld. Luc
28.04.2016 16:40:55
Daniel
ist halt so, nie man selber.

Eben, gilt genau für dich, ...
28.04.2016 17:25:02
Luc:-?
…Daniel;
wer kann denn auch ahnen, dass der „Meister aller Xl-Hebelchen und -Knöpfchen“ sich mit dem VBE nicht auskennt?!
Übrigens, bevor das Projekt kompiliert wird, wird es vom Compiler debugt, um grobe Schnitzer auszuschließen. Diese Kenntnis sollte man von einem erfahrenen User erwarten können! Außerdem erfolgt eine automatische Kompilierung bei jeder Anwendung eines Pgms im VBA-Projekt, also auch beim DateiSpeichern, wenn NeuBerechnung vor Speichern nicht abgeschaltet ist.
Aber, obwohl du das alles nicht zu wissen schienst, hast du dich trotzdem zu einer Attacke hinreißen lassen. Da geschieht's dir doch nur recht, wenn du dich blamiert hast. Daran ändert auch dein dreistes Gebahren jetzt nichts, das Gefecht ist bereits verloren und das, was du jetzt ablieferst, nur noch albernes RückzugsGeplänkel.
Immer schön von anderen erwarten, was man selbst nicht zu tun bereit ist, zeichnet den Egomanen aus! :->
Luc :-?

Anzeige
AW: Eben, gilt genau für dich, ...
28.04.2016 17:47:12
Daniel
ähm, was habe ich jetzt von dir erwartet was ich selbst nicht zu tun bereit bin?

Na, überleg mal...! ;-> owT
29.04.2016 01:01:21
Luc:-?
:-?

dann hast du jetzt was gelernt. owT
28.04.2016 16:31:30
Rudi

Anzeige
AW: dafür ist ein Forum ja da ;-)
28.04.2016 16:41:27
Daniel
xxx

AW: nicht benutzte Variablen löschen
28.04.2016 12:34:16
Daniel
Hi
der VBA-Editor hat eine Suchfunktion.
gib einfach die Dimensionierten Variablen nacheinander dort ein und dann wirst du schnell feststellen, was noch benutzt wird oder nicht.
nutze dabei die Optionen "ganzes Wort" und auch "Grossschreibung beachten", damit Variablen mit kurzen Namen (i, x) nicht als Bestandteil von Wörtern gefunden werden.
beachte auch, wo du suchst (Prozedur, Modul, ganzes Projekt, markierter Text)
Variablen, die nur für eine Prozedur gültig sind, solltest du auch nur in dieser Prozedur suchen.
Gruß Daniel

Anzeige
AW: nicht benutzte Variablen löschen
29.04.2016 09:28:32
Pepi
Hallo zusammen
Ich weiss nicht was hier passiert ist - ich stelle eine ganz einfache Frage und erhalte eine ganze Flut von Antworten. Kann gut sein, dass ich vor lauter Bäumen den Wald nicht mehr sehe - sprich: ein guter Lösungsansatz übersehen habe. Die Möglichkeit ein Variablendefinition zu löschen oder auszukommentieren oder nach ihr zu suchen kenne ich und habe bis jetzt auch angewendet. Doch bei 50 Variablen und mehr ist dieser Weg ziemlich mühsam. Ich dachte da an ein Makro, das diese Arbeit für mich tut. Zum Beispiel alle definierten Variablen im Makro suchen und wenn sie nur einmal vorkommen eine Meldung ausgeben.
Noch etwas zum Umgang: In der ganzen Welt (Politik, Wirtschaft, ...) wird der Ton härter - wohin führt diese Art von Umgang? - Respektlosigkeit, keine Wertschätzung, Ueberheblichkeit, etc. Wollen wir hier im Herberforum auch so miteinander umgehen - ich hoffe auf ein klares Nein! Ich bin immer wieder zu tiefst dankbar, für all die Tipps und Hilfeleistungen, die ich durch das Herberforum erhalten habe. Einige Problemstellungen hätte ich mit meinem Wissen nie und nimmer lösen können. Herzlichen Dank an alle! Ich wünsche mir in Zukunft ein gutes Miteinander.
Seid herzlich gegrüsst. Pepi
Wenn ich nun noch einen Tipp für meine (ursprüngliche) Frage "nicht benutzte Variablen löschen" erhalte, freue ich mich sehr.
mfg
Pepi

Anzeige
AW: nicht benutzte Variablen löschen
29.04.2016 10:39:29
Daniel
Hi
im VBA-Editor ist so eine Bearbeitungsfunktion meines bescheidenen Wissens nach nicht eingebaut.
Da wirst du auf die angebotene Drittsoftware zugreifen müssen.
du kannst dir natürlich auch selber was stricken.
der VBA-Code ist auch nur ein Text
du kannst ihn in eine Exceltabelle kopieren und dann mit Formeln oder Makros bearbeiten und analysieren.
z.B. kannst du ja mit ZählenWenn ermitteln, wie oft ein Variablenname im Text vorkommt.
wenn du den Code in Spalte A eingefügt hast, dann in die Spalte neben den Variablendeklarationen folgende Formel, um den Variablennamen zu extrahieren und zu zählen (hier für einfache Variablen mit DIM:
=ZählenWenn(A:A;"*"&Teil(A2;5;Finden(" As";A2)-5)&"*")
hat natürlich ein paar Tücken, bspw sollte der Variablenname eine Zeichenfolge sein, die sonst nicht vorkommt, dann musst du ggf die Leerzeichen in die Suche mit aufnehmen, das findet dann aber die Variable nicht, wenn sie in Klammern steht.
ist jetzt noch keine fertige Lösung, aber du hast mal einen Ansatz, wenn du dir selber was stricken kannst.
Ein anderer Ansatz:
- Deklariere alle Variablen nur als Variant
- setze vor dem End Sub einen Haltepunkt
- Überprüfe im Lokalfenster den Typ der Variablen. die Variablen, die auf "Variant/Empty" stehen, wurden wahrscheinlich noch nie benutzt.
Gruß Daniel

Anzeige
AW: nicht benutzte Variablen löschen
29.04.2016 09:28:57
Pepi
Hallo zusammen
Ich weiss nicht was hier passiert ist - ich stelle eine ganz einfache Frage und erhalte eine ganze Flut von Antworten. Kann gut sein, dass ich vor lauter Bäumen den Wald nicht mehr sehe - sprich: ein guter Lösungsansatz übersehen habe. Die Möglichkeit ein Variablendefinition zu löschen oder auszukommentieren oder nach ihr zu suchen kenne ich und habe bis jetzt auch angewendet. Doch bei 50 Variablen und mehr ist dieser Weg ziemlich mühsam. Ich dachte da an ein Makro, das diese Arbeit für mich tut. Zum Beispiel alle definierten Variablen im Makro suchen und wenn sie nur einmal vorkommen eine Meldung ausgeben.
Noch etwas zum Umgang: In der ganzen Welt (Politik, Wirtschaft, ...) wird der Ton härter - wohin führt diese Art von Umgang? - Respektlosigkeit, keine Wertschätzung, Ueberheblichkeit, etc. Wollen wir hier im Herberforum auch so miteinander umgehen - ich hoffe auf ein klares Nein! Ich bin immer wieder zu tiefst dankbar, für all die Tipps und Hilfeleistungen, die ich durch das Herberforum erhalten habe. Einige Problemstellungen hätte ich mit meinem Wissen nie und nimmer lösen können. Herzlichen Dank an alle! Ich wünsche mir in Zukunft ein gutes Miteinander.
Seid herzlich gegrüsst. Pepi
Wenn ich nun noch einen Tipp für meine (ursprüngliche) Frage "nicht benutzte Variablen löschen" erhalte, freue ich mich sehr.
mfg
Pepi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Nicht benutzte Variablen in Excel VBA effizient löschen


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor in Excel zu starten.
  2. Suche nach Variablen: Nutze die Suchfunktion (Strg + F) im VBE, um nach deinen deklarierten Variablen zu suchen. Achte darauf, die Optionen „Ganzes Wort“ und „Großschreibung beachten“ zu aktivieren.
  3. Überprüfe die Verwendung: Wenn du nur die Deklaration findest und keine weitere Verwendung, kannst du die Variable löschen oder auskommentieren (setze ein Hochkomma davor).
  4. Verwende Option Explicit: Achte darauf, dass Option Explicit am Anfang deines Moduls steht. Das zwingt dich, alle Variablen zu deklarieren und macht es leichter, nicht benutzte Variablen zu identifizieren.
  5. Makro zur Variablenanalyse: Du kannst ein Makro erstellen, das alle Variablen durchläuft und meldet, welche nur einmal deklariert werden.

Häufige Fehler und Lösungen

  • Fehler 1: Variablen werden nicht gelöscht: Stelle sicher, dass du die Suche im gesamten Projekt durchführst und nicht nur in einer bestimmten Prozedur.

  • Fehler 2: Falsche Verwendung von Option Explicit: Vergiss nicht, Option Explicit zu aktivieren, um sicherzustellen, dass alle Variablen korrekt deklariert werden.

  • Fehler 3: Verwirrung über lokale und globale Variablen: Achte darauf, dass du nur in der entsprechenden Prozedur nach lokalen Variablen suchst.


Alternative Methoden

  1. Drittsoftware: Es gibt Tools auf dem Markt, die dir helfen können, nicht benutzte Variablen zu finden und zu löschen. Diese können oft tiefergehende Analysen durchführen als der Standard-VBA-Editor.

  2. Excel-Formeln: Du kannst den VBA-Code in eine Excel-Tabelle kopieren und mit Formeln wie ZählenWenn arbeiten, um herauszufinden, wie oft eine Variable im Code vorkommt.

  3. Debugging: Setze Haltepunkte im Code und überprüfe im Lokalfenster die Typen der Variablen. Variablen, die auf "Variant/Empty" stehen, wurden wahrscheinlich nicht verwendet.


Praktische Beispiele

Hier ist ein einfaches Makro, das alle Variablen in einem Modul aufruft und prüft, ob sie verwendet werden:

Sub CheckUnusedVariables()
    Dim varName As String
    Dim count As Integer
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(1) ' Zielblatt für die Ausgabe

    ' Durchlaufe alle Variablen im Modul
    For Each varName In Application.VBE.ActiveCodePane.CodeModule.Lines
        count = Application.WorksheetFunction.CountIf(ws.Range("A:A"), "*" & varName & "*")
        If count = 1 Then
            Debug.Print varName & " wird nicht verwendet."
        End If
    Next varName
End Sub

Tipps für Profis

  • VBA variable leeren: Um den Speicherplatz zu sparen, kannst du nicht mehr benötigte Variablen mit Set variable = Nothing leeren.

  • Verwendung von Dim: Deklariere Variablen immer mit Dim, um den Gültigkeitsbereich zu steuern.

  • Regelmäßige Überprüfung: Mache es dir zur Gewohnheit, deinen Code regelmäßig auf nicht benutzte Variablen zu überprüfen, um die Übersichtlichkeit zu verbessern.


FAQ: Häufige Fragen

1. Wie kann ich alle Variablen in meinem VBA-Projekt auflisten?
Du kannst ein Makro schreiben, das alle Variablen in deinem Code durchläuft und sie in einer Liste anzeigt.

2. Was passiert, wenn ich eine nicht benutzte Variable lösche?
Es sollte zu keinen Problemen führen, solange die Variable nicht mehr benötigt wird. VBA wird beim Ausführen des Codes keine Fehler anzeigen, wenn die Variable nicht vorhanden ist.

3. Gibt es eine Möglichkeit, alle Variablen automatisch zu leeren?
Ja, du kannst ein Makro schreiben, das alle Variablen auf Nothing setzt oder ihre Werte zurücksetzt, um den Speicherplatz zu optimieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige