Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
536to540
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
536to540
536to540
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA: Zeitliche Abfolge von Ereignissen

VBA: Zeitliche Abfolge von Ereignissen
27.12.2004 19:36:54
Ereignissen
Hi Leute,
im Anschluss ein diesen noch offenen Thread https://www.herber.de/forum/messages/538369.html hab ich mir mal die zeitliche Abfolge von Ereignissen angeschaut. Daraus resultiert:
Mappe1 ist geöffnet und enthält ein Workbook_Deactivate-Ereignis:

Private Sub Workbook_Deactivate()
MsgBox "Mappe1 wurde deaktiviert"
End Sub

Mappe1 bleibt geöffnet und es wird (zu Fuß) Mappe2 geöffnet, die ein Workbook_Open-Ereignis enthält:

Private Sub Workbook_Open()
MsgBox "Mappe2 wurde geöffnet"
End Sub

Dabei tritt das Open-Ereignis zuerst ein - dann erst das Deactivate-Ereignis.
Warum denn bitteschön? Und noch besser: Wie kann ich es erreichen, dass vor dem öffnen der Datei "Mappe2" auf jeden Fall noch ein Code in "Mappe1" ausgeführt wird?
Wie ist die Abfolge der Ereignisse geregelt?
Danke und Grüße
Boris

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Zeitliche Abfolge von Ereignissen
27.12.2004 19:54:36
Ereignissen
Boris, kann das sein, dass Mappe1 die bislang einzig offene Mappe ist?
Wenn ja dann ist der Ablauf etwa so:
Mappe1 wird erst mit Öffnen von Mappe2 deaktiviert,
also greift erst das Open-Ereigniss, bevor ein Deactivate eintritt.
Geht ja auch nicht anders, versuch mal ne einzige! Mappe zu deaktivieren ;-)
Naja, so oder so ähnlich sehe ich das Ganze,
kann auch sein ich habs missinterpretiert ;-)
Gruss Nancy
AW: VBA: Zeitliche Abfolge von Ereignissen
Ereignissen
Hi Nancy,
danke erstmal.
Egal ob Mappe1 die einzige ist oder nicht - ich möchte halt eben in dieser Mappe noch einen Code ausführen - nämlich eine eigene Symbolleiste ausblenden. Und das geht nicht (siehe alter Thread - Link in dieser Anfrage) in Verbindung mit DisplayFullscreen.
Die Anwendung muss eben DAU-sicher sein - und wenn in einer anderen Mappe die eigene Symbolleiste sichtbar bleibt, dann wird da auf jeden Fall wie wild rumgeklickt - und das möchte ich halt vermeiden, da es im Zweifel nur zu Irritationen und Fehlern kommen wird.
Any idea?
Grüße Boris
Anzeige
AW: VBA: Zeitliche Abfolge von Ereignissen
Ereignissen
Hallo Boris
"...Any idea?..."
Keine Lösung für das Problem, aber die Makros die durch die Symbolleiste ausgelöst werden, könnten doch mal den Namen der gerade aktiven Mappe prüfen und bei Bedarf die Arbeit verweigern ;-)
Gruss Rainer
Ja - das wär natürlich ne Lösung...
Boris
Hi Rainer,
...allerdings bleibt die Symbolleiste dann weiterhin sichtbar - und ein DAU ist ein DAU, bleibt ein DAU...;-)
Ich hab auch schon überlegt, im Deactivate-Ereignis vor dem Ausblenden der Symbolleisten die DisplayFullscreen-Eigenschaft abzufragen - wenn True, dann auf False setzen, Leisten ausblenden und wieder auf True setzen.
Aber irgendwie kann das ja nicht der Weisheit letzter Schluss sein.
Ich krieg halt einfach nicht in meinen Kopf, dass erst Code in der neu geöffneten Datei ausgeführt wird und anschließend sozusagen der Rest der alten Datei abgearbeitet wird.
Aber es wird halt einfach so sein...;-))
Danke und Grüße Boris
Anzeige
AW: VBA: Zeitliche Abfolge von Ereignissen
27.12.2004 20:16:08
Ereignissen
Kleiner Nachtrag noch, hab' mal debug.print genommen und nen timer gesetzt,
eigentlich isses ja fast zeitgleich;-) aber definitiv erst _Open, dann _Deactivate
Wegen der Codeausführung _vorm_ Öffnen, hmmm - keine Ahnung, duu könntest über
deaktivate ein
if workbooks.count &gt 2
oder so laufen lassen, [2 == kommt drauf an, ob mit oder ohne personl.xls]
aber deswegen wird der Code nicht _vorm_ Öffnen von Mappe2 ausgeführt.
Obwohl so schnell sollten DAU's auch nicht klicken können;-)
lg Nancy
--
öffnen von Mappe2: 72810,17
deaktivieren von Mappe1: 72810,17
öffnen von Mappe2: 72836,38
deaktivieren von Mappe1: 72836,38
Anzeige
Danke für Deine Tests...
Boris
Hi Nancy,
...das Ganze mutiert langsam zu einer schlichten Grundsatzfrage.
Wie bei Rainer schon gepostet:
Ich kapier halt nicht, warum erst ein Code in der neuen Datei ausgeführt und dann erst der Restcode in der alten Datei abgearbeitet wird...
Grüße Boris
AW: VBA: Zeitliche Abfolge von Ereignissen
27.12.2004 20:14:39
Ereignissen
Hi Boris,
folgender Tipp:
Du sprichst zwar in deinem alten Thread von "Menüleiste", und ohne das für Menüleiste getestet zu haben, funktioniert bei "Symboleisten" (bei mir unter Office XP) das folgende:
Blende die Symbolleiste bei "Deactivate" nicht aus sondern lösche sie!
Entsprechend beim Activate-Ereignis neu erzeugen.
Gruß
Christoph
PS: löschen finde ich immer den besseren Weg, da ich dann auch sicher bin, dass das Teil nicht noch irgenwo "rumhängt"
Anzeige
AW: VBA: Zeitliche Abfolge von Ereignissen
Ereignissen
Hi Christoph,
da war ich begrifflich unsauber - ich meinte natürlich eine eigene Symbolleiste.
Wie ist das denn mit der Performance? Bei einer kleinen Symbolleiste dauert das Erzeugen / Löschen natürlich nicht lange - aber wie ist es mit einer sehr umfangreichen eigenen Menüsteuerung? Ist da das Ausblenden nicht schneller?
Das ist bei mir jetzt zwar nicht der Fall - aber grundsätzlich für mich interessant.
Danke und Grüße
Boris
AW: VBA: Zeitliche Abfolge von Ereignissen
27.12.2004 21:57:03
Ereignissen
Hi Boris,
bezüglich Performance kann ich nur mutmaßen ... das hängt von der Hardware ab.
Aber der folgende (für eine Symbolleiste denkbar aufwendige) Code läuft bei mir mit 600 MHz und 256 MB ohne merkliche Verzögerung - wie gesagt unter Office XP.
probier's mal aus:
https://www.herber.de/bbs/user/15347.xls
Zu deiner Grundsatzfrage, warum das "Open-Ereignis" vor dem "Deactivate-Ereignis" ausgeführt wird, kann ich dir leider auch nichts genaueres sagen und schließe mich Nancy's Meinung an.
Gruß
Christoph
Anzeige
Vielen Dank...
Boris
Hi Christoph,
...das läuft in der Tat ohne Verzögerung.
Jetzt habe ich zumindest einige Optionen - und zudem die Bestätigung, dass Open vor Deactivate kommt - warum auch immer. Aber wenn man´s weiss, dann kann man wenigstens entsprechend drauf reagieren.
Danke und Grüße
Boris
es freut mich, dir auch mal geholfen zu haben ...
27.12.2004 22:49:46
Christoph
...denn...
was würde ich ohne deine {Boris}-Formeln machen ...
bis denne
Christoph
Reihenfolge, wie Ereignisse abgearbeitet werden
Beate
Hallo zusammen,
nach euren Erkenntnissen nichts Neues, aber auf der HP von Chip Pearson http://www.cpearson.com/excel/events.htm gibt es einen Beitrag, in welcher Reihenfolge Ereignisse abgearbeitet werden:
Order Of Event Procedures
When an event is processed by more than one object, the procedure in the "lowest level" object is executed first, and then execution proceeds "up the chain". For example, changing the value of a cell triggers the Worksheet_Change event first, then the Workbook_SheetChange event, and finally the App_WorkbookChange event.
When opening a workbook, the order of events is as follows:
Workbook_Open
App_WorkbookOpen
Workbook_WindowDeactivate (of previous workbook)
App_WindowDeactivate (of prevous workbook)
Workbook_Deactivate (of previous workbook)
Workbook_Activate
App_WorkbookActivate
Workbook_WindowActivate
App_WindowActivate
Auto_Open

When closing a workbook, the order of events is as follows:
Workbook_BeforeClose
App_WorkbookBeforeClose
Auto_Close
Excel prompts the user to save the workbook
Workbook_BeforeSave
App_WorkbookBeforeSave
Excel saves the workbook
Workbook_WindowDeactivate
App_WindowDeactivate
Workbook_Deactivate
App_WorkbookDeactivate

When switching between two open workbooks, the order of events is as follows:
Workbook_WindowDeactivate
App_WindowDeactivate
Workbook_Deactivate
App_WorkbookDeactivate
Workbook_Activate
App_WorkbookActivate
Workbook_WindowActivate
App_WindowActivate

When switching between two worksheets within a workbook, the order of events is as follows:
Worksheet_Deactivate
Workbook_SheetDeactivate
App_SheetDeactivate
Worksheet_Activate
Workbook_SheetActivate
App_SheetActivate
Gruß,
Beate
Anzeige
Danke für die Info und den Link! oT
Boris
Grüße Boris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige