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

Modulnamen und Makroname ermitteln

Forumthread: Modulnamen und Makroname ermitteln

Modulnamen und Makroname ermitteln
SteffenS
Hallo Zusammen,
wie kann ich per Makro, den Namen des aktuellen Moduls und des aktiven Makros ausgeben
Sub test1()
Msgbox...
End Sub
Ergebnis Msgbox: Modul1 --> Makro: test1
Gut wäre es, wenn dies ohne "Zugriff auf das Mircosoft Visual-Basic Modul vertrauen" geht.
Danke Euch schonmal
VG
Steffen Schmerler
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Modulnamen und Makroname ermitteln
02.09.2010 21:07:07
Nepumuk
Hallo,
das geht nicht.
Unser Module haben sprechende Namen (z.B. bas_Handoff). Alle Prozeduren darin beginnen mit HANDOFF (z.B. HANDOFF_Init). In jeder Prozedur ist eine Konstante mit diesem Namen hinterlegt (z.B. Const PROCEDURNAME = "HANDOFF_Init"). Der Aufrunf im Error-Handler (liegt im Modul bas_ErrorHandler) dann:
Call ERRORHANDLER_Log_Error(PROCEDURNAME, Err, Erl)
Der Errorhandler loggt dann:
Benutzer | Datum | Zeit | Prozedur | Fehlerzeile | Fehlernummer | Fehlerbeschreibung
Das Modul geht aus dem Prozedurnamen hervor. In Events die immer den selben Namen haben, steht dann noch zusätzlich die Klasse in der Konstanten PROCEDURNAME (z.B. Const PROCEDURNAME = "frm_Calendar: UserForm_Activate")
Gruß
Nepumuk
Anzeige
AW: Modulnamen und Makroname ermitteln
03.09.2010 08:42:03
JogyB
Hallo Steffen,
ergänzend zu dem was Nepumuk geschrieben hat wäre noch zu erwähnen, dass Du bei Code in Tabellen bzw. UserForms natürlich den Namen der Tabelle mit Me.CodeName bzw. den Namen des UserForms mit Me.Name auslesen kannst.
Gruß, Jogy
noch ne Ergänzung
03.09.2010 09:15:44
Rudi
Hallo,
Me. kannst du weglassen.
Gruß
Rudi
Anzeige
AW: noch ne Ergänzung
03.09.2010 12:50:03
JogyB
Hallo.
Würde ich aber nicht tun, denn wenn man den Code mal in ein allgemeines Modul auslagern will, dann muss der Tabellen- bzw. UserForm-Name davor. Hat man nun das Me. verwendet (und sei es als With Me), dann ist das mit Suchen...Ersetzen schnell erledigt.
Gruß, Jogy
Danke
04.09.2010 10:01:39
SteffenS
VG
Steffen
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Modulnamen und Makroname ermitteln in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Namen des aktuellen Moduls und des aktiven Makros in Excel VBA auszugeben, kannst Du folgendes Makro verwenden:

Sub test1()
    Dim modName As String
    Dim macroName As String

    modName = Application.VBE.ActiveCodePane.CodeModule.Name
    macroName = Application.VBE.ActiveCodePane.CodeModule.ProcOfLine(Application.VBE.ActiveCodePane.TopLine, vbext_pk_Proc)

    MsgBox "Modul: " & modName & " --> Makro: " & macroName
End Sub

Dieses Makro zeigt eine Nachricht an, die den Namen des Moduls und den Namen des aktiven Makros enthält. Beachte, dass Du möglicherweise die „Zugriff auf das Microsoft Visual Basic for Applications-Projekt vertrauen“ aktivieren musst, um auf das VBE zugreifen zu können.


Häufige Fehler und Lösungen

  1. Fehler: Zugriff auf VBE ist nicht möglich

    • Lösung: Stelle sicher, dass die Sicherheitseinstellungen in Excel so konfiguriert sind, dass der Zugriff auf das VBA-Projekt erlaubt ist. Dies kann unter „Datei“ > „Optionen“ > „Trust Center“ > „Einstellungen für das Trust Center“ geändert werden.
  2. Fehler: Keine Rückgabe des Modulnamens

    • Lösung: Überprüfe, ob Du das Makro in einem Modul und nicht in einer UserForm oder Tabelle ausführst. Der Zugriff auf Module erfolgt nur über das VBE.

Alternative Methoden

Wenn Du den Namen des Moduls und des Makros ohne Zugriff auf das VBE ermitteln möchtest, kannst Du eine Konstante in jedem Makro definieren, die den Namen des Makros speichert. Beispiel:

Sub HANDOFF_Init()
    Const PROCEDURNAME As String = "HANDOFF_Init"
    ' Dein Code hier
End Sub

Durch diese Methode kannst Du den Prozedurnamen innerhalb des Makros immer referenzieren.


Praktische Beispiele

Hier ist ein Beispiel für ein Modul mit sprechenden Namen:

Sub bas_Handoff()
    Const PROCEDURNAME As String = "bas_Handoff"
    ' Hier kann weitere Logik hinzugefügt werden
End Sub

Wenn Du dann einen Error-Handler in einem anderen Modul verwenden möchtest, könnte dieser wie folgt aussehen:

Sub ERRORHANDLER_Log_Error(procName As String, errNum As Long, errLine As Long)
    ' Logik zum Protokollieren des Fehlers
End Sub

Tipps für Profis

  • Verwende sprechende Modul- und Prozedurnamen. Dies erleichtert das Verständnis und die Wartung Deines Codes.
  • Nutze Konstanten, um den Prozedurnamen zu speichern. Dies hilft bei der Fehlersuche und macht die Wartung einfacher, besonders, wenn Du den Code in ein allgemeines Modul verschieben möchtest.
  • Denke daran, dass der Zugriff auf das VBE für die Ausführung der oben genannten Methoden erforderlich ist.

FAQ: Häufige Fragen

1. Wie kann ich den Modulnamen in einer UserForm ermitteln? Du kannst den Namen der UserForm mit Me.Name ermitteln und den Code für die Prozeduren in der UserForm anpassen.

2. Welche Excel-Version benötige ich für diese Methoden? Die beschriebenen Methoden funktionieren ab Excel 2007 und höher, solange Du Zugriff auf das VBE hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige