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

Name einer Prozedur lesen

Forumthread: Name einer Prozedur lesen

Name einer Prozedur lesen
01.07.2003 17:44:20
hans
Mit dem Befehl "ActiveWorkbook.Name" kann ich z. B. in visual basic den Namen einer Datei herausfinden.
Wie lautet der Befehl für den Namen der aktuellen Prozedur in einem Modul?
Danke für die Antwort.
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Sorry falsch - AW: Name einer Prozedur lesen
01.07.2003 22:01:46
Matthias G.
Sorry, da war Das Modul und nicht die Prozedur.

Sorry falsch - AW: Name einer Prozedur lesen
01.07.2003 22:13:21
Nepumuk
Hallo Matthias,
da gibt es auch keine Möglichkeit den Namen der Prozedur rauszubekommen. Ich kann dir die Namen aller Prozeduren auflisten, oder alle Module nach eine bestimmten Prozedur suchen lassen, aber das ist auch schon alles. Das mit dem Auflisten funktioniert übrigens so:

Option Explicit
Sub MakroListe()
Dim vbc As Object, iRow As Integer, iCol As Integer, iCounter As Integer, sMacro As String
Cells.Clear
Rows(1).Font.Bold = True
For Each vbc In ThisWorkbook.VBProject.VBComponents
iRow = 1
iCol = iCol + 1
Cells(iRow, iCol).Value = vbc.Name
With vbc.CodeModule
For iCounter = 1 To .CountOfLines
If .ProcOfLine(iCounter, 0) > "" Then
sMacro = .ProcOfLine(iCounter, 0)
If sMacro <> Cells(iRow, iCol) Then
iRow = iRow + 1
Cells(iRow, iCol).Value = sMacro
End If
End If
Next iCounter
End With
Next vbc
Columns.AutoFit
End Sub


Gruß
Nepumuk

Anzeige
Sorry falsch - AW: Name einer Prozedur lesen
01.07.2003 22:23:59
Matthias G.
Hallo Nepomuk,
ist ein toller Code, kann ich für meine chaotischen Programme gut gebrauchen, um mehr Übersicht reinzukriegen :-)
Vielen Dank,
Matthias

AW: Name einer Prozedur lesen
01.07.2003 19:10:34
Nepumuk
Hallo Hans,
willst du ein Programm laufen lassen, welches dir ausgibt, welches Programm gerade läuft?
Gruß
Nepumuk

Anzeige
AW: Name einer Prozedur lesen
01.07.2003 21:02:09
Hans
hallo nepumuk,
mir es nicht um das programm das gerade läuft sondern um den namen der visuell basic prozedur (sub ...) die gerade läuft.
danke.
gruss
hans

AW: Name einer Prozedur lesen
01.07.2003 21:19:40
Matthias Gößner
Hallo Hans,
mir erscheint das ganze auch seltsam.
Wenn Du eine Sub oder Function schreibst, hat sie doch ihren festen Namen, der ist doch sowieso nicht variabel.
Wozu brauchst du das Ganze denn?
Neugierig:
Matthias

Anzeige
AW: Name einer Prozedur lesen
02.07.2003 09:20:51
hans
ganz einfach: nach einer "On Error GoTo" anweisung möchte ich den prozedur-namen erfahren in dem der fehler auftrat.

AW: Name einer Prozedur lesen
01.07.2003 22:00:36
Nepumuk
Hallo Hans,
und wie willst du die ermitteln? Mit einem Parallelprogramm das neben deinen Programmen läuft und immer nachschaut welche Prozedur gerade läuft? Ich wüsste nicht wie das gehen soll. Ich habe zwar eine Routine entwickelt, die es mir ermöglicht zwei Programme parallel laufen zu lassen, aber es gibt für ein Programm keine Möglichkeit in ein anderes Programm reinzuschauen und festzustellen, jetzt ist diese Programmzeile aktiv, zu welchem Makro gehörst du. Die einzige Möglichkeit wäre einen Memorydump zu machen und dort nachsehen, welcher Sub zu dem Zeitpunkt gerade aktiv war. Wenn ich nun überlege wie viele DIN A4 Seiten meine 512 MB Arbeitsspeicher ergeben die ein anderes Programm dann auswerten müsste und dabei bedenke, dass erstens mindestens zwanzig Prozesse im Hintergrund auf meinem Rechner laufen und ich zweitens die Speicheradresse deines Codes nicht kenne, dann kannst du getrost noch eine zweite Kanne Kaffee aufsetzen, bevor das ermittelt ist. Weil aber dein Programm nicht darauf wartet, ist das ganze Unterfangen doch recht Sinnlos. Mach einfach eine MsgBox in deine Sub's die dir sagen, "Jetzt laufe ich, Sub soundso".
Gruß
Nepumuk

Anzeige
;
Anzeige

Infobox / Tutorial

Namen von Prozeduren in Excel VBA ermitteln


Schritt-für-Schritt-Anleitung

Um den Namen einer Prozedur in Excel VBA zu ermitteln, kannst du den folgenden VBA-Code verwenden, der alle Prozeduren in einem Modul auflistet. Dieser Code gibt dir eine Übersicht der Prozedurnamen, was besonders hilfreich ist, wenn du mit vielen Modulen arbeitest.

Option Explicit
Sub MakroListe()
    Dim vbc As Object, iRow As Integer, iCol As Integer, iCounter As Integer, sMacro As String
    Cells.Clear
    Rows(1).Font.Bold = True
    iRow = 1
    iCol = 1

    For Each vbc In ThisWorkbook.VBProject.VBComponents
        Cells(iRow, iCol).Value = vbc.Name
        With vbc.CodeModule
            For iCounter = 1 To .CountOfLines
                If .ProcOfLine(iCounter, 0) <> "" Then
                    sMacro = .ProcOfLine(iCounter, 0)
                    If sMacro <> Cells(iRow, iCol) Then
                        iRow = iRow + 1
                        Cells(iRow, iCol).Value = sMacro
                    End If
                End If
            Next iCounter
        End With
        iRow = iRow + 1
    Next vbc
    Columns.AutoFit
End Sub

Führe den Code aus, um eine Liste der Prozeduren in deinem aktuellen VBA-Projekt zu erhalten.


Häufige Fehler und Lösungen

Fehler: "Objekt nicht gefunden"
Dieser Fehler tritt auf, wenn du versuchst, auf ein nicht existierendes Modul zuzugreifen. Stelle sicher, dass alle Module in deinem Projekt vorhanden sind.

Lösung: Überprüfe die Namen der Module und stelle sicher, dass sie korrekt sind.


Alternative Methoden

Eine alternative Methode zur Ermittlung des Prozedurnamens ist das Verwenden einer MsgBox, die den Namen der Prozedur anzeigt, während sie läuft. Du kannst dies am Anfang jeder Prozedur hinzufügen:

Sub BeispielProzedur()
    MsgBox "Jetzt laufe ich, Sub BeispielProzedur"
    ' Dein Code hier
End Sub

Diese Methode ist einfach und ermöglicht es dir, sofort zu wissen, welche Prozedur aktiv ist.


Praktische Beispiele

Hier sind einige Beispiele, wie du den oben genannten Code für unterschiedliche Zwecke anpassen kannst:

  1. Prozeduren in einem bestimmten Modul auflisten: Ändere die Schleife, um nur ein bestimmtes Modul zu durchsuchen.

  2. Prozeduren nach Typ filtern: Du kannst den Code so anpassen, dass er nur Subs oder Functions auflistet, je nach deinen Anforderungen.


Tipps für Profis

  • Verwende Kommentare: Halte deine Prozeduren gut dokumentiert, damit du beim Durchsuchen des Codes leichter verstehst, was jede Prozedur tut.
  • Strukturiere deinen Code: Organisiere deine Prozeduren in logischen Gruppen, um die Übersichtlichkeit zu erhöhen.
  • Nutze Error Handling: Implementiere eine Fehlerbehandlung in deinen Prozeduren, um schnell den Namen der Prozedur zu ermitteln, in der ein Fehler aufgetreten ist.

FAQ: Häufige Fragen

1. Wie kann ich den Namen der aktuellen Prozedur während der Ausführung ermitteln?
Es gibt keine direkte Möglichkeit, den Namen der laufenden Prozedur zu ermitteln. Du kannst jedoch eine MsgBox oder eine Prozedur wie im Schritt-für-Schritt-Anleitung beschrieben verwenden.

2. Warum sind die Namen der Prozeduren wichtig?
Die Namen helfen dir, den Überblick über deinen Code zu behalten und schnell zu verstehen, welche Funktionalitäten in deinem VBA-Projekt vorhanden sind.

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