Ich habe ein Workbook_Open-Ereignismakro (und es ist in ThisWorkbook), das nicht immer ausgeführt wird.
Ich habe die Sicherheit auf "Mittel" eingestellt und aktiviere Makros, wenn es geöffnet wird.
Was muss ich tun, damit das Makro ausgeführt wird, wenn ich es öffne, nicht nur beim ersten Mal für diese Excel-Sitzung?
(übrigens, das ist Excel 2003)
Ich dachte, das wäre der überzeugendste Artikel zu diesem Problem (das ist ein seit langem bestehender, nie erklärter, völlig unberechenbarer Fehler, den Excel ausstellt). (toter Link)
Kurz gesagt, es ist in vielen Fällen eine Timing-Sache, die verursacht wird, weil die Arbeitsmappe versucht, Sachen zu berechnen, wenn sie geöffnet wird und das dem Workbook_Open-Ereignis im Weg steht. Die Art und Weise zu testen, ob es für diese Situation ist, besteht darin, zuerst alle von Zellen aufgerufenen UDFs oder Makros umzubenennen, so dass sie nicht aufgerufen werden und sehen, ob sich irgendetwas ändert.
Ich habe das gleiche Problem erlebt.
Ich habe eine Arbeitsmappe ohne Probleme auf meinem Computer getestet. Nach der Verteilung an meine Kunden wurde mir gesagt, dass einige Combo-Boxen leer blieben. Diese werden normalerweise innerhalb der Routine workbook_open
gefüllt.
Ich habe verschiedene Dinge ausprobiert, um das workbook_open
-Event zu aktivieren - ohne Erfolg.
Schließlich fand ich, dass die Deaktivierung aller benutzerdefinierten Funktionen (UDF) zur korrekten Ausführung von workbook_open
führte.
Da meine Arbeitsmappe aus einer anderen Datei geöffnet wird, werde ich versuchen, zuerst die Berechnung auf manuell zu setzen und dann workbook_open
manuell auszuführen. Dies kann durch Definition von
statt
%Vor%Seltsam, dass Excel das nicht selbst misst ...
Eine späte Antwort (besser als keine).
Ich hatte dieses Problem jetzt ein paar Mal (mit Excel 2010). Die Lösung, die (bisher) immer funktioniert hat, war: Entfernen Sie bedingte Formatierung, insbesondere wenn sie UDF als Bedingungen enthält. Wie @LanceRoberts in einem obigen Beitrag geschrieben hat, liegt es letztlich daran, dass UDF-Berechnungen das Open-Ereignis "überschreiben", aber ich habe festgestellt, dass diese besonders schädlich sind, wenn sie in bedingten Formaten verwendet werden.
Ich habe fast identisches Verhalten festgestellt und festgestellt, dass dies auf einen Fehler zurückzuführen ist, der auftritt, wenn bedingte Formatierungsregeln fehlschlagen. Es stellt sich heraus, dass, wenn die Regeln für die bedingte Formatierung auf irgendeiner Einstellung durch die Makros basieren und die bedingte Formatierung zu einem Fehler führt, der Makro Workbook_Open nicht einmal versucht, zu laufen.
Zum Testen erstellen Sie eine Kopie Ihrer Datei und löschen Sie alle bedingten Formatierungen aus der Arbeitsmappe. Speichern und erneut öffnen. Wenn das Problem dadurch behoben wird, müssen Sie die bedingten Formatierungsregeln so anpassen, dass sie nicht mehr von Funktionen / Werten abhängen, die vor dem Ausführen des Workbook_Open-Makros unterbrochen werden.
Einige Vorschläge:
Stellen Sie sicher, dass Sie die neuesten Service Packs installiert haben.
Ich habe das gleiche Problem festgestellt und vermeide es, die Sicherheitseinstellungen zu verwenden. Ich benutze die Optionen Einstellungen dann Vertraulichkeitszentrum, dann "Params of Disability Center" (Entschuldigung, aber es ist eine Übersetzung der französischen Version: -p) dann "Dateien approved" oder so ähnlich. Und fügen Sie die Datei hinzu, die die Excel-Arbeitsmappe enthält. Und es funktionierte danach.
Sah überall hin und fand diese Lösung nie.
Ich hoffe, es wird jemandem helfen
Hatte das gleiche Problem und ich denke, ich habe es. Ich musste ein Workbook_BeforeClose private Sub an Stelle setzen, das die Arbeitsmappe speicherte, wenn es nicht nur gelesen wurde; und eine Workbook_BeforeSave, die sichergestellt hat, dass Application.EnableEvents = True ist. Dies scheint zu ermöglichen, dass das Workbook_Open ausgelöst wird. Nicht 100% sicher warum , aber scheint wiederholbar, einschließlich in einer leeren neuen Arbeitsmappe.
Dies passiert, wenn eine Arbeitsmappe geschlossen wird und Application.EnableEvents auf false gesetzt wird. Anschließend öffnen Sie eine andere Arbeitsmappe in derselben excel-Instanz. Um dies zu vermeiden, stellen Sie sicher, dass alle Prozesse, die Ereignisse deaktivieren, vor dem Beenden wieder aktiviert werden können. Besonderes Augenmerk auf "End" -Befehle, Fehlerbehandler und "Exit Sub" -Sätze in der Mitte Ihres Programms.
Was bewirkt, dass Ihr anderes Archiv, das Sie zuerst geöffnet haben, eine Workbook_Open
Prozedur hat; Excel führt es nicht ein zweites Mal aus.
Das ist mir auch passiert und hat Stunden gebraucht, um das herauszufinden.
Stellt sich heraus, dass die Funktion HEUTE () in Excel das Problem verursacht hat. Einmal aus meinem Arbeitsblatt gelöscht, hat alles wieder funktioniert. Sehr seltsamer Fehler.
Hinzufügen zum Arturo Llano-Beitrag: Der folgende Code wurde zum Überwachen des Workbook_Open-Ereignisses und zum Ausführen von ProcessX verwendet, wenn eine Arbeitsmappe geöffnet wurde.
ProcessX enthielt eine End-Anweisung. Das Ergebnis war, dass es nur das erste Mal funktioniert hat. Das Ende löschte AppX, so dass keine weiteren Ereignisse beobachtet werden konnten. Durch das Entfernen von End wurde das Problem behoben. (Die Verwendung von End ist sowieso eine schlechte Übung, da es alles stoppt, ohne irgendeine Art von Säuberung oder Beendigung anderer Ressourcen).
'Code in: Persönliches.xlsb ThisWorkbook
%Vor%Tags und Links vba excel events excel-2003