Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
968to972
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
968to972
968to972
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

OnAction = Makro doppelt ausgeführt, BeforePrint

OnAction = Makro doppelt ausgeführt, BeforePrint
23.04.2008 13:43:13
Reinhard
Hallo Wissende,

Sub Umbelegen()
Dim cmbb As CommandBarButton
Set cmbb = Application.CommandBars("file").Controls("Seitenansic&ht")
cmbb.OnAction = "tt(1)"
End Sub
Sub tt(Nummer As Byte)
MsgBox Nummer     ' Ein Haltepunkt hier bringt nix
End Sub
Sub test()
Call tt(1)          ' klappt, die "1" wird einmal ausgegeben, Haltepunkt wird beachtet
End Sub


das Makro Umbelegen lasse ich laufen, anschließend gehe ich auf Datei--Seitenansicht, daraufhin wird derzeit die "1" zweimal nacheinander angezeigt. Wieso zweimal?
Der Hintergrund ist, ich will ermitteln und unterschiedlich reagieren wenn jmd. den Weg Datei--Seitenansicht geht oder aber auf das Symbol mit dem Blatt samt Lupe klickt.
Aber ich fand da nichts wie Application.Caller o.ä. im Print-Ereignis , also kam ich darauf bei beiden Wegen jeweils mittels Onkey einem Makro eine Nummer mitzugeben um das dann auszuwerten.
Tipps zu einem anderen Vorgehen nehme ich gerne an :-)
Zunächst aber habe ich diese zwei Fragen:
a) Wieso wird die MsgBox zweimal aufgerufen, genauer zweimal die "1" ausgegeben, denn an einem Haltepunkt in der Zeile der MsgBox wird nicht angehalten.
b) Wieso wird überhaupt das BeforePrint-Ereignis ausgelöst wenn ich auf Seitenansicht gehe?
Danke ^ Gruß
Reinhard

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: OnAction = Makro doppelt ausgeführt, BeforePri
23.04.2008 14:24:00
Rudi
Hallo,
die 1 kannst du so nicht übergeben.
tt wird gar nicht ausgelöst, da es das Makro tt(1) nicht gibt.
Wenn du einen Print-Befehl in Workbook_beforeprint hast, wird das Ereignis nochmal ausgelöst.
Option Explicit
Public blnSeitenAnsicht As Boolean
Sub Umbelegen()
Dim cmbb As CommandBarButton
Set cmbb = Application.CommandBars("worksheet menu bar").FindControl(ID:=109, recursive:=True)
cmbb.OnAction = "tt"
Set cmbb = Application.CommandBars("standard").FindControl(ID:=109, recursive:=True)
cmbb.OnAction = "tt"
End Sub


'
Sub tt()
blnSeitenAnsicht = True
ActiveSheet.PrintPreview
End Sub


Dim blnPrint As Boolean


Private Sub Workbook_BeforePrint(Cancel As Boolean)
If blnPrint = False Then
blnPrint = True
Select Case blnSeitenAnsicht
Case True
MsgBox "Seitenansicht"
Case False
MsgBox "Drucken"
Cancel = True
'was beim Drucken passieren soll
End Select
blnSeitenAnsicht = False
blnPrint = False
End If
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: OnAction = Makro doppelt ausgeführt, BeforePri
23.04.2008 15:02:00
Reinhard
Hallo Rudi,
da ist aber kein sonstiger Code in der Mappe, mit cmbb.OnAction = "tt(2)" klappt das auch, also die "2" wird zweimal ausgegeben, wiederum ohne durchlaufen des Makros "tt", sehr mysteriös das Ganze, deshalb lasse ich die Frage noch auf offen, vielleicht hat ja jmd. Interesse dieses Rätsel zu lösen.
Bei cmbb.OnAction = "tt(1234)" kam dann die bisher vermisste Fehlermeldung daß das Makro "tt(1234)" nicht gefunden wurde.
Dankeschön für den Code, das erspart mir sehr viel Archivsuche und googeln. Gerade mit Symbolleisten, Menüs usw. habe ich immer meine last die korrekt anzusprechen/referenzieren.
mfG
Reinhard

Anzeige
AW: OnAction = Makro doppelt ausgeführt, BeforePri
23.04.2008 15:18:00
Renee
Hallo Reinhard,
Parameter mit Buttons/OnAction übergeben so:
Ein .OnAction Makro/Funktion kann Werte via der Eigenschaft .Parameter von Controls übergeben werden.
Also z.b. so.
Button1 mit .OnAction = "MeinMakro" .Parameter="1"
Button2 mit .OnAction = "MeinMakro" .Parameter="2"
Dann

Sub MeinMakro()
Msgbox CommandBars.ActionControl.Parameter
End Sub


GreetZ Renée

AW: OnAction = Makro doppelt ausgeführt, BeforePri
23.04.2008 16:20:00
Reinhard
Grüezie Renée,
klappt super:

Option Explicit
Sub Umbelegen()
' Code ist von Rudi und Renée
Dim cmbb As CommandBarButton
Set cmbb = Application.CommandBars("worksheet menu bar").FindControl(ID:=109, recursive:=True)
cmbb.OnAction = "tt"
cmbb.Parameter = "1"
Set cmbb = Application.CommandBars("standard").FindControl(ID:=109, recursive:=True)
cmbb.OnAction = "tt"
cmbb.Parameter = "2"
End Sub
Sub tt()
MsgBox CommandBars.ActionControl.Parameter
End Sub

Gruß
Reinhard

Anzeige
AW: OnAction = Makro doppelt ausgeführt, BeforePri
23.04.2008 16:32:00
Renee
Hoi Reinhard,
' Code ist von Rudi und Renée
schreib doch nächstes mal einfach:
Userbild
Dann wärst Du auch dabei ;-)
GreetZ Renée

OT ŔR®
23.04.2008 17:07:00
Reinhard
ui, welch Ehrung :-)
ja, das wäre genial wenn dieses Symbol unserer Softwareschmiede Bill nachts im Traum verfolgt.
Ihr zwei habt doch locker in so einem Jahr das Supermakro fertig was allen MS-Office Code zu 100,00 % fehlerfrei in OO Basic, Python, Jva überträgt.
Zumindest so daß es zu 100,00 % genauso falsch läuft wie als MS-Vbacode.
Millionen von Firmen weltweit warten nur darauf die Software zu wechseln und strömen alle zu uns und jede will jedes KB des Codes mit KG in Gold aufwiegen... *träum*
Lieben Gruß
Reinhard
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige