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

Abbruch des auto_close-Makros

Abbruch des auto_close-Makros
15.08.2002 10:52:24
Peer
Hallo zusammen,
kann mir jemand sagen, wie ich in einem auto_close-Makro einen Abbruch des Schließens der Arbeitsmappe herbeiführe?
Ich hab's versucht mit

Sub auto_close(cancel As Boolean)
cancel=true
End Sub

aber das funktioniert nicht. Scheinbar kann Excel mit dem "cancel as Boolean" im auto_close-Makro nichts anfangen, ich muß diesen Befehl aus programmtechnischen Gründen aber unbedingt in eben diesem Makro haben (kann z. B. nicht auf das workbook_close-Objekt ausweichen). Kann jemand helfen?
Vielen Dank im Voraus!
Gruß,

Peer

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Abbruch des auto_close-Makros
15.08.2002 11:18:28
ANdreas
Hallo Peer,

Willst Du aus einem Makro eine Mappe schließen, dann geht das z.B. so:
ActiveWorkbook.Close

Willst Du auf das Beenden reagieren, nutze besser:

Bevor die Mappe geschlossen wird, wird dann die Workbook_BeforeClose im Klassenmodul "DieseArbeitsmappe" ausgeführt. Wenn dort Cancel = True steht, wird die Mappe NICHT geschlossen!

Hoffe das hilft weiter!
Andreas

Re: Abbruch des auto_close-Makros
15.08.2002 11:40:22
Peer
Hallo Andreas,

danke für Deine Antwort. Leider kann ich aus Dateisystemtechnischen Gründen das Klassenmodul nicht verwenden, sondern muß die Lösung - falls es eine gibt - im auto_close-Makro umsetzen.
Gruß,

Peer

Anzeige
Re: Abbruch des auto_close-Makros
15.08.2002 11:46:21
Charlie
Hallo, Peer!

Vielleicht liegt es nur daran, dass ich durch meine regelmäßigen Nachtschichten in den letzten Tagen nicht wirklich ausgeschlafen bin, aber was soll das eigentlich werden?

Ein Cancel = True im Workbook_BeforeClose-Ereignis verhindert das Schließen der Arbeitsmappe. Aber irgendwann soll sie doch auch zugemacht werden, oder?

Das gleiche passiert doch auch, wenn Du das - warum auch immer - in einem Auto_Close-Makro machen willst. Auto_Close ist ein Relikt aus früheren Excelversionen, das durch das Workbook_BeforClose eigentlich ausgedient hat. Auto_Close kennt keine vordefinierten Parameter, Du kannst solche individuell aber auch übergeben:

Wenn Du die Auto_Close-Prozedur ohne Übergabe von "Cancel" aufrufst, ist dieser Paramter False (weil nicht vorhanden) und das Auto_Close wird ausgeführt.

Wie gesagt, der Sinn der ganzen Aktion ist mir verborgen geblieben (was aber a) nichts aussagt und b) auch egal sein wird ;)).

Viel Erfolg,
Charlie

Anzeige
Re: Abbruch des auto_close-Makros
15.08.2002 11:49:12
Andreas
Hallo Peer,

m.W. ist das nicht möglich, da die Sub Auto_Open() nicht optional ist.
Wieso solltest Du das Klassenmodul nicht nutzen können???

Hinweis: Hans hat mal ein kleinen Überblick zu diesem Thema gegeben:
https://www.herber.de/forum/archiv/124to128/t126984.htm

Viel Spaß,
Andreas

Re: Abbruch des auto_close-Makros
15.08.2002 11:52:11
ANdreas
Hallo Charlie,

so geht´s natürlich! ;-)
Andreas

Re: Abbruch des auto_close-Makros
15.08.2002 13:08:55
Peer
Hi Andreas,

das ist extrem kompliziert zu erklären:
grob vereinfacht gesagt, soll beim Schließen der Datei die Frage "Änderungen speichern oder nicht?" mit optionalem Abbruch des Schließens erscheinen. Den Standard-Excel-Dialog kann ich hierfür aber nicht verwenden, da im auto_close-Makro Befehle zur Wiederherstellung der Standardmenüleiste vorhanden sind (diese wird bei Öffnen der Datei modifiziert). Klickt man im Standarddialog dann auf "Abbrechen", ist man noch in der Datei, allerdings mit den Standardmenüs, was ich ja verhindern wollte.
Also habe ich das Problem mit einer msgbox gelöst, die im auto_close-makro eingearbeitet ist (was aber eben zu meinem Problem führt).
Die Befehle zum Modifizieren der Menüleiste kann ich auch nicht ins Klassenmodul schreiben, da sie im auto_close-Menü stehen müssen (dies wird nämlich bei bestimmten Aktionen von anderen Makros "ferngestartet").
Gruß,

Peer

Anzeige
Re: Abbruch des auto_close-Makros
15.08.2002 13:10:58
Peer
Hi Charlie,

danke für Deinen Tip, das sieht ganz vielversprechend aus.

Zur Frage, warum ich das innerhalb des auto_close-Makros bewerkstelligen wollte:

Das ist extrem kompliziert zu erklären:
Grob vereinfacht gesagt, soll beim Schließen der Datei die Frage "Änderungen speichern oder nicht?" mit optionalem Abbruch des Schließens erscheinen. Den Standard-Excel-Dialog kann ich hierfür aber nicht verwenden, da im auto_close-Makro Befehle zur Wiederherstellung der Standardmenüleiste vorhanden sind (diese wird bei Öffnen der Datei modifiziert). Klickt man im Standarddialog dann auf "Abbrechen", ist man noch in der Datei, allerdings mit den Standardmenüs, was ich ja verhindern wollte.
Also habe ich das Problem mit einer msgbox gelöst, die im auto_close-makro eingearbeitet ist (was aber eben zu meinem Problem führt).
Die Befehle zum Modifizieren der Menüleiste kann ich auch nicht ins Klassenmodul schreiben, da sie im auto_close-Menü stehen müssen (dies wird nämlich bei bestimmten Aktionen von anderen Makros "ferngestartet").
Gruß,

Peer

Anzeige
Re: Abbruch des auto_close-Makros
15.08.2002 13:35:57
Charlie
Hallo, Peer!

Ich glaube, Du machst Dir das (VBA-)Leben schwerer als es ohnehin ist. Du kannst das Workbook_BeforeClose-Ereignis doch auch aus anderen Prozeduren "fernstarten", indem Du a) das Workbook_BeforeClose-Ereignis nicht als "Private" deklarierst oder b) einfach ThisWorkbook.Close verwendest --> Ergebnis: Das Workbook_BeforeClose-Ereignis wird ausgeführt. Die Abfrage kannst Du dann noch immer ausführen:

Viel Erfolg,
Charlie

Re: Abbruch des auto_close-Makros
15.08.2002 13:36:48
ANdreas
Hallo Peer,

so ich hoffe, dass ich Dich richtig verstanden habe. Folgendes Makro in "DieseArbeitsmappe":

So in einem Standardmodul hast Du die Sub MenueLeisteHerstellen() mit dem Code fürs einblenden der entsprechenden Leiste(n).
Jedesmal wenn die Datei geschlossen wird (egal ob "manuell" oder per VBA Befehl .Close), erscheint die Abfrage "Änderungen speichern: Ja, Nein, Abbrechen". Wird auf Ja geklicket, wird gespeichert und das Makro zum Wiederherstellen der Leisten ausgeführt. Dann wird die Datei geschlossen. Wird auf Nein geklickt, dann wird nicht gespeichert, das "Leistenmakro" ausgeführt und die Datei geschlossen. Klickt man auf Abbrechen, wird die Datei nicht geschlossen...

Hoffe das hilft weiter!
Andreas

Anzeige
Re: Abbruch des auto_close-Makros
16.08.2002 07:19:15
Peer
Hallo Andreas,

das war auch mein erster Ansatz, allerdings muß dieses Makro eben als Workbook_BeforeClose-Ereignis laufen, was bei meinen Tests zu diversen Schwierigkeiten führte (ehrlich: um das auto_close-Makro komm' ich nicht herum, ich hab' alles versucht :))
Ich habe das Problem aber mittlerweile auf eine andere Art gelöst (inspiriert von Charlie's Idee, das auto_close-Makro bei Bedarf über eine Deklaration innerhalb eines separaten "schließen"-Makros abzubrechen).
Trotzdem vielen Dank für die Hilfe!
Gruß,

Peer

Re: Abbruch des auto_close-Makros
16.08.2002 07:22:11
Peer
Auf die einfachsten Lösungen kommt man immer nicht... :)
Die Lösung, das BeforeClose-Ereignis einfach nicht als "private" zu deklarieren, wäre vermutlich der einfachste Weg gewesen.
Mittlerweile hab' ich aber das Problem auf eine andere Weise gelöst (inspiriert durch Deine Idee, das auto_close-Makro bei Bedarf durch eine Deklaration innerhalb eines separaten "schließen"-Makros abzubrechen).
Vielen Dank für die Hilfe!
Gruß,

Peer

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige