Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1152to1156
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Modulname auslesen

Modulname auslesen
Bernd
Hallo,
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Modulname auslesen
04.05.2010 20:03:17
fcs
Hallo Bernd,
das Problem besteht hier darin, dass du mit dem ActivePaneCode-Objekt arbeitest.
Excelhilfe hierzu:
ActiveCodePane-Eigenschaft
Gibt das aktive oder letzte aktive CodePane-Objekt zurück oder legt es fest. Schreib-/Lesezugriff.

Wenn du das Makro mit F5 im VBA-Editor startest, dann ändert sich die ActivePane nicht. Benutzt du die schrittweise Bearbeitung mit F8, dann wechselt während der Ausführung die ActivePane vom Modul "Tabelle1" in das Modul "Modul1" und das ActivePane-Objekt ändert sich bevor die MsgBox angezeigt wird.
Noch exotischer wird es, wenn du dein Makro direkt aus dem Excel-Programmfenster startest. Dann wird der Name des Codefensters angezeigt, dass im VBA-Editor zuletzt aktive war. Das kann sogar ein Modul aus einer anderen Datei sein.
Bei deiner Frage zum "normalen" Durchlauf via F5 kann ich nicht weiterhelfen.
Gruß
Franz
Anzeige
AW: Modulname auslesen
05.05.2010 08:58:02
Bernd
Hallo Franz,
vielen Dank für deine Antwort. Ich glaube ich habe verstanden, wo das Problem liegt. Das ist dann bei der Variante mit SelectedVBComponent die gleiche Geschichte, oder?
Eine Prozedur muss doch eigentlich "wissen", in welchem Modul sie sich befindet!? Genau diese Information würde ich gerne auslesen. Kann mir gar nicht vorstellen, dass so etwas nicht möglich sein soll. Hat jemand da eine Idee?
Gruß,
Bernd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige