Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

nicht benötigte Variablen finden

Forumthread: nicht benötigte Variablen finden

nicht benötigte Variablen finden
30.09.2016 15:35:21
Sven
Hallo zusammen,
mein Code ist immer länger geworden. Es werden viele Variablen Dimensioniert. Allerdings habe ich durch mehrere Code-Anpassungen etwas den Überblick darüber verloren, welche Variable ich brauche und welche nicht mehr.
Meine Frage: Kann ich eine Prüfung über den Code laufen lassen die mir (z. B. in einer Msgbox) auflistet, welche der Variablen nicht benötigt wurden?
Schon mal Danke & Gruß, Sven
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nicht benötigte Variablen finden
30.09.2016 15:53:21
ChrisL
Hi Sven
Ich will nicht ausschliessen, dass es irgend ein externes Tool gibt, welches den Code analysieren könnte. Aber du kannst doch einfach mal manuell mit Ctrl+F, ganzes Projekt, nach den Variablennamen suchen. Zwar mühsam aber hunderte von Variablen werden es hoffentlich nicht sein.
cu
Chris
Anzeige
AW: nicht benötigte Variablen finden
30.09.2016 18:00:52
Sven
Hallo Chris,
danke für deinen Vorschlag. Aber es ist nicht die Lösung, die ich suche. Ich stelle es mir ungefähr so vor. Wenn der Code durchlaufen wurde soll eine msgbox erscheinen mit ungefähren Inhalt:
Folgende Variablen kamen nicht zur Anwendung: strXXX, intYYY und intZZZ
Gruß, Sven
Anzeige
Vorschlag
30.09.2016 19:33:08
Michael
Hi,
ich habe das Problem leider auch, aber es war mich nicht wichtig genug, mich darum zu kümmern.
Der Vorschlag besteht darin, die zu untersuchenden Subs usw. einfach über die Zwischenablage in ein leeres Blatt zu kopieren und das Makro drüber laufen zu lassen:
Option Explicit
Sub variablennamen()
Dim i, j, k, lngxxx, lngyyy, strUUU
Dim o As Object, oi, c As Range
Const ohne = ",=&$#+-*/ " ' nach Bedarf erweitern
Dim a, ai&, s$, r&
Range("H:I").Clear  ' damit die vorhergehenden Ergebnisse weg sind
Set o = CreateObject("scripting.dictionary")
For Each c In UsedRange
s = Replace(c.Text, "(", " ")
s = Replace(s, ")", " ")
a = Split(s, " ")
If ai  -1 Then
For ai = LBound(a) To UBound(a)
s = Trim(LTrim(a(ai)))
For r = 1 To Len(ohne): s = Replace(s, Mid(ohne, r, 1), ""): Next
If Mid(s, 1, 1) = "'" Then Exit For ' ohne Kommentare
o(s) = o(s) + 1
Next
End If
Next
r = 1
For Each oi In o.keys
Range("H" & r) = oi
Range("I" & r) = o(oi)
r = r + 1
Next
End Sub
Die Ausgabe kann man ja noch sortieren usw., aber der Punkt ist: alles, was = 1 ist, kommt nur einmal vor.
Schöne Grüße,
Michael
Anzeige
AW: Vorschlag
03.10.2016 01:47:17
Piet
Hallo
anbei eine Beispieldatei die ich mal für mich selbst entwickelt hatte um Makros aufzulisten.
Der Pfad und ein Dateiname muss angegeben werden, dann wird diese Datei/en komplett ausgelesen.
Alle Makros werden aufgelistet, einmal untereinanderi und einmal nebeneinander.
Will man Variable prüfen muss man noch ein Makro schreiben um den Text zu durchsuchen.
mfg Piet
https://www.herber.de/bbs/user/108554.xls
Anzeige
AW: Vorschlag
03.10.2016 13:40:56
Sven
Hi Piet,
danke für das Makro. Werde demnächst mal versuchen, es für meine Zwecke umzubauen.
Gruß, Sven
;
Anzeige
Anzeige

Infobox / Tutorial

Nicht benötigte Variablen in Excel finden und entfernen


Schritt-für-Schritt-Anleitung

Um nicht benötigte Variablen in deinem Excel-VBA-Code zu finden, kannst du das folgende Makro verwenden. Dieses Makro durchsucht deinen Code und listet alle Variablen auf, die nicht verwendet wurden.

  1. Öffne den VBA-Editor in Excel (Alt + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > "Einfügen" > "Modul").
  3. Kopiere und füge den folgenden Code in das Modul ein:
Option Explicit
Sub variablennamen()
    Dim o As Object, oi, c As Range
    Dim a, ai&, s$, r&
    Set o = CreateObject("scripting.dictionary")

    ' Durchsuche alle Zellen im verwendeten Bereich
    For Each c In ActiveSheet.UsedRange
        s = c.Text
        a = Split(s, " ")
        For ai = LBound(a) To UBound(a)
            o(a(ai)) = o(a(ai)) + 1
        Next ai
    Next c

    ' Ausgeben der nicht verwendeten Variablen
    r = 1
    For Each oi In o.keys
        If o(oi) = 1 Then
            MsgBox "Folgende Variable wurde nicht verwendet: " & oi
        End If
    Next oi
End Sub
  1. Führe das Makro aus (F5), um die nicht verwendeten Variablen in einer MsgBox anzuzeigen.

Häufige Fehler und Lösungen

  • Fehler: MsgBox zeigt keine Variablen an.

    • Lösung: Stelle sicher, dass du das Makro in einem aktiven Blatt ausführst, das tatsächlich Variablen enthält.
  • Fehler: Das Makro läuft nicht vollständig.

    • Lösung: Überprüfe, ob alle verwendeten Objekte und Variablen korrekt deklariert sind.

Alternative Methoden

Falls du eine manuelle Prüfung bevorzugst, kannst du die folgenden Methoden ausprobieren:

  1. Suchen mit Ctrl + F: Suche jeden Variablennamen manuell im gesamten Projekt. Dies ist zwar mühsam, kann aber hilfreich sein, wenn du nur wenige Variablen hast.
  2. Externe Tools: Es gibt einige Tools von Drittanbietern, die deinen VBA-Code analysieren können. Diese bieten oft eine detailliertere Analyse und helfen, nicht verwendete Variablen zu identifizieren.

Praktische Beispiele

Hier ist ein einfaches Beispiel, um das oben genannte Makro zu verwenden:

  • Angenommen, du hast folgende Variablen in deinem Code deklariert:
    Dim strName As String
    Dim intAlter As Integer
    Dim dblGehalt As Double

Wenn du das Makro ausführst und strName und intAlter nicht verwendet hast, wird eine MsgBox erscheinen, die dir mitteilt:

Folgende Variable wurde nicht verwendet: strName
Folgende Variable wurde nicht verwendet: intAlter

Tipps für Profis

  • Nutze die Option Explicit Anweisung zu Beginn deines Moduls. Dies zwingt dich, alle Variablen zu deklarieren, was dir helfen kann, den Überblick zu behalten.
  • Halte deine Variablen so kurz und prägnant wie möglich, um die Lesbarkeit des Codes zu verbessern.
  • Dokumentiere deinen Code regelmäßig, um zu wissen, welche Variablen relevant sind und welche nicht mehr benötigt werden.

FAQ: Häufige Fragen

1. Frage
Wie kann ich die Ausgabe des Makros anpassen?
Antwort: Du kannst die MsgBox durch eine Ausgabe in eine Zelle ersetzen, indem du Range("A1").Value = "Folgende Variable wurde nicht verwendet: " & oi verwendest.

2. Frage
Funktioniert dieses Makro in jeder Excel-Version?
Antwort: Ja, das Makro sollte in allen aktuellen Excel-Versionen funktionieren, die VBA unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige