Forums Neueste Beiträge
 

erkennen, welches Makro ausgeführt wird

27/11/2008 - 20:46 von Susanne Wenzel | Report spam
Hallo NG,

mal eine recht allgemeine Frage:
woran kann ich schnell erkennen, welches Makro hinter einem
Symbol/Menüeintrag liegt bzw. ausgeführt wird?

Hintergrund: ich habe ein eigenes Menü gebaut, dem ich auf die klassische
Weise (gibt es übrigens noch eine andere Möglichkeit?) Makros zugeordnet
habe. Also über Extras/Anpassen...Befehle/Makros das entsprechende in der
im rechten Listenfeld aufgeführten Makros ausgewàhlt und mit der Maus in
mein neu geschaffenes Menü eingefügt. Und da ich die von Word standardmàßig
eingefügten Texte so gar nicht leiden mag, habe ich dort den Text
abgeàndert.

Ich habe dann die entsprechende Prozedur noch ein bisschen nachbearbeitet.
Da diese nicht ganz wie erwartet arbeitet, habe ich für Debuggingzwecke
einen Haltepunkt gesetzt. Führe ich die Prozedur manuell aus der IDE aus,
làuft sie wie erwartet ab. Drücke ich auf die Schaltflàche, tut sie das
nicht (und mein Haltepunkt wird darüber hinaus geflissentlich ignoriert).

Daraus schließe ich, dass dort nicht meine Prozedur durchlaufen wird, was
irgendwie merkwürdig ist. Kompilieren konnte ich ohne Probleme, gebrochene
Verweise habe ich auch nicht. Trotzdem liegt da was im Argen.

Deshalb meine schon oben gestellte Frage: Kann ich *einfach* feststellen,
welche Prozedur da zur Ausführung gelangt oder muss ich mir eine Prozedur
schreiben, die alle Schaltflàchen durchlàuft und mir auflistet, welches
Makro dahinter liegt? In Excel ist das sehr einfach, ich kann vom GUI aus
mir anzeigen lassen, welches Makro genau hinter der Schaltflàche liegt.

Vielen Dank fürs Lesen und eventuelle Tips

Viele Grüße aus dem hohen flachen Norden Deutschlands
Susanne
Office XP, SP3, aktueller Patchstand
Windows 2000, SP4, aktueller Patchstand
KI-TRIPLE 2007
 

Lesen sie die antworten

#1 Lorenz H
27/11/2008 - 21:11 | Warnen spam
Hallo Susanne,

Susanne Wenzel schrieb:
mal eine recht allgemeine Frage:
woran kann ich schnell erkennen, welches Makro hinter einem
Symbol/Men�eintrag liegt bzw. ausgef�hrt wird?


Die Word-eigenen Menüs werden durch Makros repràsentiert, die die
gleichen Namen tragen. Wenn Du beispielsweise Datei/Drucken abfangen
willst, schreibst Du

Sub DateiDrucken()
MsgBox "àtsch"
End Sub

in einem beliebigen Modul. Besser und neutraler ist aber die englische
Bezeichnung "FilePrint". Das Symbol ist übrigens ein anderer Befehl
als das Menü und heißt "FilePrintDefault".

Ich habe dann die entsprechende Prozedur noch ein bisschen nachbearbeitet.
Da diese nicht ganz wie erwartet arbeitet, habe ich f�r Debuggingzwecke
einen Haltepunkt gesetzt. F�hre ich die Prozedur manuell aus der IDE aus,
l�uft sie wie erwartet ab. Dr�cke ich auf die Schaltfl�che, tut sie das
nicht (und mein Haltepunkt wird dar�ber hinaus geflissentlich ignoriert).


Du willst es aber von eigenen Menüs wissen. Dann müsstest Du mit VBA
in der Commandbars-Auflistung deren Controls und Unter-Commandbars und
Unter-Controls durchforsten und dort die OnAction-Eigenschaft
abfragen. Diese enthàlt als String den Namen des auszuführenden
Makros.
Das ist làstige Schreibarbeit wegen der rekursiven Struktur von Menüs.
Die Methode FindControl der Commandbar könnte Dir dabei helfen,
bestimmte Menüeintràge zu finden.


Daraus schlie�e ich, dass dort nicht meine Prozedur durchlaufen wird, was
irgendwie merkw�rdig ist. Kompilieren konnte ich ohne Probleme, gebrochene
Verweise habe ich auch nicht. Trotzdem liegt da was im Argen.

Deshalb meine schon oben gestellte Frage: Kann ich *einfach* feststellen,
welche Prozedur da zur Ausf�hrung gelangt oder muss ich mir eine Prozedur
schreiben, die alle Schaltfl�chen durchl�uft und mir auflistet, welches
Makro dahinter liegt? In Excel ist das sehr einfach, ich kann vom GUI aus
mir anzeigen lassen, welches Makro genau hinter der Schaltfl�che liegt.


Du hast recht, manche Befehle werden beim Menüaufruf ignoriert oder
stoppen die Ausführung. Die MsgBox gehört nach meiner Erinnerung dazu,
habe ich jetzt aber nicht getestet.

Nutze stattdessen Debug.Print und gucke spàter im Debug-Fenster (Strg
+A im VBA-Editor) nach, das ist unproblematisch und funktioniert.

tschö, Lorenz

http://www.cls-software.de/cls_soft...rdVBA.aspx

Ähnliche fragen