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

Modulname auslesen?!

Forumthread: Modulname auslesen?!

Modulname auslesen?!
16.03.2005 12:24:50
Andre
Hi zusammen,
mit folgendem Befehl kann ich den Namen des Moduls auslesen, in der sich die momentane Prozedur befindet:
Application.VBE.ActiveCodePane.CodeModule.Parent.Name
Schön und gut, aber irgendwie will das nicht funktionieren, wenn man diese Zeile aus dem auto_open-Ereignis heraus aufruft!
Das heißt, das Makro

Sub test()
msgbox Application.VBE.ActiveCodePane.CodeModule.Parent.Name
End Sub

funktioniert nach Aufruf über eine Schaltfläche z.B., aber nicht folgendermaßen:

Sub auto_open()
msgbox Application.VBE.ActiveCodePane.CodeModule.Parent.Name
End Sub

Auch wenn erste Makro durch das auto_open-Ereignis aufgerufen wird haut es nicht mehr hin:

Sub auto_open()
call test
End Sub


Sub test()
msgbox Application.VBE.ActiveCodePane.CodeModule.Parent.Name
End Sub

Weiß jemand ob ich das Problem irgendwie lösen kann?
Gruß Andre
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Modulname auslesen?!
16.03.2005 12:35:31
Domke,
Hallo Andre,
wenn Du das Modul "Private Sub Workbook_Open()" aus "DieserArbeitsmappe" aufrufst, dann weist Du doch, dass das Modul "DieserArbeitsmappe" heißt, oder wo steht Deine Prozedur?
Was willst Du mit der Ausgabe erreichen?
Gruß
Frank.
AW: Modulname auslesen?!
16.03.2005 12:46:38
Frank
Hallo,
auto_open ist zu früh!
ActiveCodePane ist "nothing" ! logischerweise meckert Excel
Gruss
Franky
Anzeige
AW: Modulname auslesen?!
16.03.2005 12:53:22
bst
Auch Hallo,
&gt mit folgendem Befehl kann ich den Namen des Moduls auslesen,
&gt in der sich die momentane Prozedur befindet:
Du irrst. Siehe VBA-Hilfe:
Gibt das aktive oder letzte aktive CodePane-Objekt zurück oder legt es fest. Schreib-/Lesezugriff.
Hat nichts damit zu tun wo Dein Teil liegt.
Und, siehe Frank's Antwort. Versuch's auch mal hiermit:
MsgBox Application.VBE.ActiveCodePane Is Nothing
cu, Bernd
Anzeige
AW: Modulname auslesen?!
16.03.2005 13:26:11
Andre
Danke euch.
Mein Problem ist, das meine Makros alle auf dem auto_open-Ereignis aufbaut (sprich, auto_open ruft die erste UF und man bewegt sich nur noch auf Basis dieser UF!).
Der Befehl funzt aber nicht, wenn das nachfolgende Makro in dem dieser steht aus auto_open aufgerufen worden ist.
Weiß denn jemand Rat, wie ich trotzdem den Modulnamen auslesen kann?
Ich würde gerne meine Fehlerroutine "vereinfachen" und den Namen des Moduls (am liebsten auch den Namen des Makros!?) an eine Variabel übergeben.
Gruß Andre
Anzeige
;
Anzeige

Infobox / Tutorial

Modulnamen in Excel VBA auslesen


Schritt-für-Schritt-Anleitung

Um den Modulnamen in Excel VBA auszulesen, kannst Du den folgenden Befehl verwenden:

Sub test()
    MsgBox Application.VBE.ActiveCodePane.CodeModule.Parent.Name
End Sub

Wenn Du diese Zeile jedoch im auto_open-Ereignis aufrufst, tritt ein Problem auf. Der Befehl funktioniert nicht, weil ActiveCodePane in diesem Fall "nothing" ist. Hier ist der Code für das auto_open-Ereignis:

Sub auto_open()
    MsgBox Application.VBE.ActiveCodePane.CodeModule.Parent.Name
End Sub

Stelle sicher, dass Du den Befehl in einem Kontext ausführst, in dem ActiveCodePane verfügbar ist.


Häufige Fehler und Lösungen

  1. Fehler: ActiveCodePane ist "nothing"

    • Lösung: Der Befehl sollte nicht direkt im auto_open-Ereignis verwendet werden, da zu diesem Zeitpunkt kein aktives Codefenster vorhanden ist. Versuche stattdessen, den Befehl in einer Schaltfläche oder einem anderen Makro auszuführen.
  2. Fehler: Modulname nicht verfügbar

    • Lösung: Wenn Du den Modulnamen aus einer UserForm heraus benötigst, stelle sicher, dass Du den richtigen Kontext verwendest, und rufe den Namen nach dem vollständigen Laden der UserForm ab.

Alternative Methoden

Eine alternative Methode, um den Modulnamen auszulesen, besteht darin, den Namen der Arbeitsmappe zu verwenden. Wenn Du den Namen des Moduls aus einer UserForm heraus benötigst, kannst Du den folgenden Code verwenden:

Sub GetWorkbookModuleName()
    MsgBox ThisWorkbook.Name
End Sub

Diese Methode ist hilfreich, wenn Du den Namen der Arbeitsmappe als Bezugspunkt nutzen möchtest.


Praktische Beispiele

Hier ist ein praktisches Beispiel, wie Du den Modulnamen in einer Fehlerroutine verwenden könntest:

Sub ErrorHandlingExample()
    On Error GoTo ErrorHandler
    ' Dein Code hier

    Exit Sub

ErrorHandler:
    MsgBox "Fehler im Modul: " & Application.VBE.ActiveCodePane.CodeModule.Parent.Name
End Sub

Diese Methode ermöglicht es Dir, den Modulnamen im Falle eines Fehlers anzuzeigen und so die Fehlersuche zu erleichtern.


Tipps für Profis

  • Verwende Debug.Print: Anstatt eine Meldung anzuzeigen, kannst Du den Modulnamen auch im Direktfenster ausgeben, um die Übersichtlichkeit zu erhöhen:

    Debug.Print Application.VBE.ActiveCodePane.CodeModule.Parent.Name
  • Verwende Workbook_Open: Anstelle von auto_open kannst Du das Workbook_Open-Ereignis in "DieserArbeitsmappe" verwenden, um

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