ich möchte in einer Prozedur gerne wissen, in welchem Modul sich diese befindet, egal von wo die Prozedur aufgerufen wird. Folgendes Beispiel verdeutlicht mein Problem.
Voraussetzungen:
Ich habe ein leeres Excel-Dokument, in dem sich ein Tabellenblatt mit dem Namen 'Tabelle1' und ein Modul mit dem Namen 'Modul1' befindet.
In dem Modul befindet sich folgender Quellcode:
Sub inModul()
MsgBox Application.VBE.ActiveCodePane.CodeModule.Parent.Name
'MsgBox Application.VBE.VBProjects.VBE.SelectedVBComponent.Name
End Sub
In dem Tabellenblatt befindet sich folgender Quellcode:
Sub inTabelle()
Modul1.inModul
End Sub
Beschreibung:
Startet man die Prozeduren einzeln (also jeweils mit F5), so liefert inModul eine MsgBox mit dem Inhalt 'Modul1' und inTabelle eine MsgBox mit dem Inhalt 'Tabelle1'.
Durchläuft man die Prozedur inTabelle in Einzelschritten (F8), liefert diese eine MsgBox mit dem Inhalt 'Modul1'.
(Dieses Verhalten ändert sich auch nicht, wenn man die auskommentierte Zeile benutzt.)
Fragen:
Weiß jemand, wie ich es hinbekomme, dass auch beim normalen Durchlauf (F5) von inTabelle die MsgBox 'Modul1' beinhaltet?
Weiß jemand, warum dieses Phänomen auftritt? (Ich war davon ausgegangen, dass das 'normale' ausführen einer Prozedur äquivalent zu der Hintereinanderausführung von lauter Einzelschritten ist... Denkfehler?)
Vielen Dank,
Bernd