Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1660to1664
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
Inhaltsverzeichnis

Wie unterscheide ich...

Wie unterscheide ich...
08.12.2018 17:33:01
Oberschlumpf
...nur Datei schließen von Excel beenden?
Hallo Leute,
mein Code...

Mldg = MsgBox("Sollen Ihre Änderungen an '" & ActiveWorkbook.Name & "' gespeichert werden?",  _
vbYesNoCancel + vbQuestion, "Microsoft Excel")
Select Case Mldg
Case 6
'mach alles, was vor dem Speichern+Schließen der Datei angepasst werden muss
pboTest = True
ThisWorkbook.Save
Case 7
pboTest = True
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
ThisWorkbook.Close False
Case 2
pboCancel = True
End Select

...fragt beim Schließen der Datei oder auch beim Beenden von Excel, ob die Datei gespeichert werden soll?
Klick ich auf den Ja-Button (Case 6), werden notwendige Veränderungen vorgenommen, nur die Datei wird gespeichert + geschlossen
Klick ich auf den Abbrechen-Button (Case 2), wird nichts gespeichert, die Datei wird auch nicht geschlossen, ich kann weiter in der Datei arbeiten.
Klick ich auf den Nein-Button (Case 7), wird nichts gespeichert + nur die Datei wird geschlossen.
Ich weiß, dass zum Beenden von Excel der Code Application.Quit notwendig ist aber noch fehlt.
Das liegt daran, weil ich nicht weiß, wie ich mit VBA unterscheide, ob in Excel nur die Datei geschlossen wurde (hier kein Application.Quit!), oder ob tatsächlich vor der Speichern-Frage oben rechts das X angeklickt wurde, damit Excel beendet wird.
Bei der Select-Case-Abfrage erhält die Variable Mldg immer 6 (Speichern JA) oder immer 7 (Speichern NEIN), egal ob ich nur die Datei schließe oder Excel beende.
Wie finde ich mit VBA heraus, ob Excel beendet werden soll?
Vielen Dank für eure Hilfe.
Ciao
Thorsten

29
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie unterscheide ich...
08.12.2018 17:54:48
Herbert
Hallo Thorsten,
zum Datei schließen gibt es mehrere Varianten. Hier habe ich dir einmal 3 davon:
1. Workbooks(sWorkBookName).Close SaveChanges:=True
2. ThisWorkbook.Close SaveChanges:=True (oder False)
3. ThisWorkbook.Close False (oder True)
Hattest du das gemeint?
Servus
AW: Wie unterscheide ich...
08.12.2018 18:30:18
Oberschlumpf
Moin Herbert,
und danke schon mal für deinen Hilfeversuch.
Aber, leider hatte ich das nicht gemeint.
Wie ich NUR die Datei schließe...ThisWorkbook.Close False/TRUE...hab ich ja schon im Code eingebaut.
Aber ok, vllt ist auch meine Erstfrage etwas verwirrend. Ich versuch noch mal, nur den Kern meiner Frage zu formulieren.
Wie kann ich mit VBA erkennen, ob nur die Datei geschlossen werden soll, oder ob Excel komplett beendet werden soll?
Hier mal 2 Bilder, an denen man vllt besser erkennen kann, was ich mit Wörtern allein nicht zu erklären schaffe :-)
Userbild
mit Klick auf diesen Button in der Symbolleiste für Schnellzugriff soll nur die Datei geschlossen werden
Userbild
mit Klick auf das X oben rechts soll Excel komplett beendet werden
Und genau diesen Unterschied (nur Datei schließen oder Excel beenden) habe ich mit VBA noch nicht herausgefunden.
Vielleicht hast du, oder jemand anderes, noch eine Idee.
Danke + Tschüss
Thorsten
Anzeige
AW: Probiers mal damit
10.12.2018 10:35:15
Herbert
Hallo Thorsten,
schau mal, ob das so ist, wie du es dir vorstellst.
Wenn du die AM ohne die SF "Beenden" schließt, wirst du gefragt, ob du sie gleichzeitig speichern willst, oder nur schließen ohne speichern.
Wenn du sie schließt mit der SF "Beenden", dann kannst du wählen, ob die AM geschlossen und gespeichert, oder nur geschlossen wird und dann auch noch, ob Excel auch noch mit geschlossen werden soll.
https://www.herber.de/bbs/user/125988.xlsm
Servus
AW: Probiers mal damit
10.12.2018 18:32:02
Oberschlumpf
Hi Herbert,
oh, diesen Beitrag hätte ich fast nicht gesehen.
Danke für den Code-Versuch.
Aber wie schon in meiner anderen Antwort an dich beschrieben, bist du ganz knapp vorbei :-)
Danke!
Thorsten
Anzeige
AW: Wie unterscheide ich...
08.12.2018 19:15:16
onur
Erklär doch mal
1)Wo dein Code steht
2)Warum das relevant ist, welcher Button gedrückt wurde.
AW: Wie unterscheide ich...
09.12.2018 09:40:34
Oberschlumpf
Hallo,
hier eine abgespeckte Bsp-Datei, die nur den Code enthält, um den es in meiner Frage geht.
https://www.herber.de/bbs/user/125976.xlsm
Die Datei funktioniert genau so nicht, wie ich es gerne hätte.
Erklärung:
Nach Klick auf das X oben rechts (Excel soll beendet werden) erscheint diese Abfrage
Userbild
Nach Klick auf NEIN wird der zugehörige Code im Makro ausgeführt; es wird NUR die Datei geschlossen, aber Excel bleibt weiterhin geöffnet
Wie/Wo kann ich vor Erscheinen der Speicherfrage abfragen, ob vorher nur die Datei geschlossen wurde, oder ob Excel beendet werden soll?
Danke + Tschüss
Thorsten
Anzeige
AW: Wie unterscheide ich...
09.12.2018 10:29:58
Herbert
Hallo Thorsten,
gehe ich recht in der Annahme, dass, wenn du das Makro "FileSave" startest, du ja schon beschlossen hast, die AM zu speichern. Also brauchst du doch im Makro nicht noch einmal zu fragen, ob du die AM speichern willst. Sehe ich das richtig? Wenn ja, könnte das Makro so aussehen:
Sub FileSave()
Application.EnableEvents = False
Application.ScreenUpdating = False
'* Arbeitsmappe (AM) speichern
Application.DisplayAlerts = False '* AM ohne Nachfrage speichern!
ThisWorkbook.Save
Application.DisplayAlerts = True
'* hier kannst du entscheiden, ob der Befehl Application.Quit angewandt werden soll
If MsgBox("Soll Excel auch gleich geschlossen werden?", vbYesNo, "?") = vbYes Then
ThisWorkbook.Close False
Application.Quit
Else
ThisWorkbook.Close False
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Servus
Anzeige
AW: Wie unterscheide ich...
09.12.2018 11:52:39
onur
Ich verstehe dein Problem gar nicht.
Wenn du willst, dass Excel auch geschlossen wird, wsenn du die Datei schliesst, brauchst du doch nur in das WorkbookBeforeClose-Event
Application.Quit

zu schreiben und deinen Code brauchst du überhaupt nicht, denn die Abfrage mit Speichern oder nicht kommt sowieso.
AW: Wie unterscheide ich...
09.12.2018 11:59:55
onur
Sorry, falscher Thread-Zweig.
AW: Wie unterscheide ich...
09.12.2018 12:04:31
Oberschlumpf
Hi Herbert,
nein, du vermutest falsch.
Ich überlasse es dem Anwender, ob er nach einer Änderung diese speichern will oder nicht.
Und ich möchte nicht, wie deinem Code zu entnehmen ist, eine Abfrage erhalten, ob Excel geschlossen werden soll oder nicht.
Mein Code soll ja erkennen, ob der Anwender (oder ich) einfach nur die Datei schließen will, oder ob Excel komplett beendet werden soll.
Ich weiß nicht, wie ich das Ganze noch beschreiben soll.
Aber bis jetzt hab ich leider das Gefühl, dass ihr, die mir helfen wollt, noch nicht ganz verstanden habt, was ich erreichen will.
Wie mit VBA eine Datei mit/ohne Speichern geschlossen wird, weiß ich.
Aber WIE KANN ICH MIT VBA erkennen...
...soll nur die Datei geschlossen werden (Excel bleibt weiterhin geöffnet)
...soll Datei geschlossen UND Excel beendet werden
Danke + Tschüss
Thorsten
Anzeige
AW: Wie unterscheide ich...
09.12.2018 11:58:50
onur
Ich verstehe dein Problem gar nicht.
Wenn du willst, dass Excel auch geschlossen wird, wsenn du die Datei schliesst, brauchst du doch nur in das WorkbookBeforeClose-Event
Application.Quit
zu schreiben und deinen Code brauchst du überhaupt nicht, denn die Abfrage mit Speichern oder nicht kommt sowieso.
AW: Wie unterscheide ich...
09.12.2018 12:19:00
Oberschlumpf
stimmt, du hast meine Frage gar nicht verstanden.
Ich will NICHT grundsätzlich, dass Excel beendet wird.
Ich will unterscheiden können, ob der Anwender (oder ich) den Schließen-Button nur für die Datei angeklickt hat, oder ob der Schließen-Button für Excel angeklickt wurde.
Schließen-Button nur für die Datei soll zur Folge haben, dass nur die Datei geschlossen wird, Excel aber weiterhin geöffnet bleibt
DAS FUNKTIONIERT JA AUCH
Schließen-Button für Excel soll zur Folge haben, dass Excel komplett beendet wird
DAS funktioniert NICHT; auch hier wird NUR die Datei geschlossen, Excel bleibt weiterhin geöffnet
Vielleicht verstreht ja doch noch jemand, was ich hier versuche zu fragen.
Danke + Tschüss
Thorsten
Anzeige
AW: Wie unterscheide ich...
09.12.2018 12:26:18
onur
Du meinst wohl, du wärest der Einzige, der Deine wirren Gedankengänge versteht - da hast du wohl auch Recht.
Das ganze Problem taucht doch nur erst durch DEINEN blöden Code auf.
OHNE den Code wird Excel auch nicht geschlossen, wenn man auf "Datei beenden" klickt UND die Abfrage mit "Speichern oder nicht" kommt, wenn die Datei verändert wurde.
OHNE den Code wird Excel auch beendet, wenn man auf "Excel beenden" klickt, UND die Abfrage kommt ebenfalls, falls nötig.
AW: Wie unterscheide ich...
09.12.2018 12:49:04
Oberschlumpf
stümmt auffallend...ohne meinen nicht blöden Code :-) passiert genau das, wie du es beschreibst.
Aber...mein nicht blöder Code ist erforderlich.
Mit meinem Code erreiche ich, dass die Datei nur mit aktivierten Makros bearbeitet werden kann, was zwingend erforderlich ist (die Makros MÜSSEN aktiviert werden)
Wenn deine Antwort jetzt sein sollte:
"Ja, hättest du den Hintergrund --> Makros müssen aktiv sein...sofort erklärt, dann hätte ich schon längst eine passende Antwort!"
...dann finde ich, dass es nicht erforderlich ist, meinen Hintergrund zu wissen.
Ich suche einfach nur nach VBA-Code, der unterscheiden kann, ob nur die Datei geschlossen oder ob Excel beendet wird.
Dafür ist es nicht nötig, dass man weiß, wieso ich den Code benötige.
Danke + Tschüss
Thorsten
...by the way noch diese Frage von mir NUR an dich:
Wieso fängst du deine Antworten einfach nicht mit einer Begrüßung an?
Klar, das ist nicht zwingend erforderlich, aber es kommt freundlicher rüber, finde ich.
Anzeige
AW: Wie unterscheide ich...
09.12.2018 13:04:51
onur
"...dann finde ich, dass es nicht erforderlich ist, meinen Hintergrund zu wissen" ?
"Dafür ist es nicht nötig, dass man weiß, wieso ich den Code benötige" ?
Solche Sprüche kannst du los lassen, wenn du mit einem Auftragsprogrammierer, den du bezahlst, sprichst ( und riskieren, dass er sagt: ´Dann mach deinen Mist selber!`"
Aber wenn du kostenlose Hilfe willst, würde ich solche arroganten Sprüche lassen.
Dann such mal weiter!
meine Antwort...
09.12.2018 13:24:15
Oberschlumpf
...war nicht arrogant gemeint (und wieder hast du etwas - nicht - verstanden^^ :-) )
Ich meinte nur (was ich auch schon bei vielen anderen Fragenden festgestellt hatte), dass eben die Fragenden aufgefordert, manchmal nahezu genötigt werden, doch bitteschön mal zu erklären, WARUM sie eine ganz bestimmte Lösung suchen.
Ich bin weiterhin der Meinung: Es ist nicht unbedingt erforderlich, dass ich (oder andere Antworter) wissen muss, wieso eine ganz bestimmte Lösung gewünscht ist.
Es wird ein Problem beschrieben, dessen Lösung ganz speziell sein muss.
Entweder weiß ich die Lösung, oder ich weiß es nicht. Dazu muss ich aber nicht wissen, wieso diese spezielle Lösung die einzig richtige ist.
Ciao
Thorsten
...leider hast du meine by the way Frage noch nicht beantwortet...kommt da noch was?
Und...wenn du, wie in meinem Fall, etwas nicht verstehst, kann es vielleicht auch möglich sein, dass DU der Grund bist, warum du etwas nicht verstehst, oder suchst du den "Schuldigen" immer nicht bei dir? ^^ :-)
Anzeige
AW: meine Antwort...
09.12.2018 13:39:06
onur
Wenn du vorher erklärt hättest, dass es darum geht, dass der User die Datei nur bearbeiten darf, wenn Makros aktiviert sind, hätte ich z.B. geschrieben, dass es andere Möglichkeiten gibt, das zu erreichen, z.b:
Alle Blätter (bei Workbook_BeforeClose) ausblenden und nur durch ein Makro im Workbook_Open einblenden
oder
Datei (bei Workbook_BeforeClose) durch Passwort schützen und durch ein Makro im Workbook_Open freigeben
usw
usw.
AW: meine Antwort...
09.12.2018 13:39:55
onur
Sorry, Thread weiterhin offen.
Zu deinen Einlassungen, ...
10.12.2018 00:05:18
Luc:-?
…Thorsten:
1. „Nötigung“ zur Begründung eines gewünschten Lösungswegs:
Die Erfahrung lehrt, dass sich Nutzer des Öfteren auf Lösungswege versteifen, die ihr Problem nicht optimal behandeln. Dabei kön­nen neue Probleme auftreten, die sie ohne diesen ungünstigen Lösungsansatz gar nicht erst hätten. Die Aufgabe eines guten Office-Beraters bestünde nun darin, …
a) das eigentliche Problem hinter dem selbstgemachten sekundären zu erkennen, und …
b) den optimalen Lösungsweg für das eigentliche Problem zu finden.
Nichts Anderes hat onur hier versucht*, obwohl das in Foren durchaus nicht selbstverständlich ist und viele AWer einfach nur die geschriebene Anfrage verwenden ohne sie zu hinterfragen. Insofern trügt dein Eindruck!
2. Hintergrundwissen - erforderlich oder nicht:
Von einem Office-Berater könntest du ebensowenig wie von einem Steuerberater eine optimale Lösung erwarten wie von einem Rechtsanwalt eine optimale Vertretung deiner Sache, wenn ihm wichtige Beweggründe u/o Fakten vorenthalten wdn. Dabei muss durchaus nicht alles wichtig sein und manche konkrete Teilfrage bedarf auch keiner näheren Erläuterung, selbst wenn danach gefragt wird. Aber das kann nur fallweise entschieden wdn, weshalb nicht nur aus Neugier nachgefragt wird.
3. Ob eine Lösung genauso sein muss, wie vom Anfrager verlangt, liegt im Ermessen des AWers. Denn hierbei kann man sich auch nicht auf die Level-Angabe verlassen, die gelegentlich unter-, aber oft genug übertrieben wird. In deinem Fall (als AWer!) habe ich schon zu oft gelesen, dass jemand anderes weitermachen soll, um deine Vorstellungen (auch in eigener Sache) unbesehen über­nehmen zu wollen. :-]
4. Viele Wege führen bekanntlich nach Rom, auch in Xl, weshalb eine angeblich einzig richtige Lösung per sé sackgassen­verdächtig und damit erläuterungsbedürftig ist.
* Ich habe vor Jahren mal etwas Vglbares iW so gemacht, wie onur es vorschlägt: Alle Blätter ausgeblendet, außer dem 1. mit einer allgemeinen Übersicht und dem Hinweis auf erforderliche Makro-Aktivierung. Versucht jemand die Datei zu manipulieren und speichert zu diesem Zweck eine Kopie, wdn bei ihrem Öffnen (mit Makro-Aktivierung) alle ausgeblendeten Blätter gelöscht und das 1. geleert. Xl stürzt dann in der Folge ab.
Aber viell erfüllt dir ja Herbert deinen Wunsch… :-]
🙈 🙉 🙊 🐵 Gruß, Luc :-?
„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
Anzeige
AW: Wie unterscheide ich...
09.12.2018 13:06:01
onur
THread offen.
das mit onur ist...
09.12.2018 13:26:08
Oberschlumpf
...leider nur ein Nebenschauplatz, der meine eigentliche Frage leider nicht mehr behandelt.
Hallo alle,
vielleicht kann mir ja doch noch jemand helfen.
Ich würde mich freuen.
Danke
Ciao
Thorsten
AW: das mit onur ist...
09.12.2018 17:31:49
Herbert
Hallo Thorsten,
ich habe da etwas für dich. Allerdings komme ich erst morgen früh dazu, es fertig zu machen.
Servus
AW: das mit onur ist...
09.12.2018 18:49:28
Oberschlumpf
Hallo Herbert,
und danke, und mach dir keinen Stress. Ich freue mich + warte geduldig.
Ciao
Thorsten
AW: das mit onur ist...
10.12.2018 09:11:03
Herbert
Hallo Thorsten,
wenn ich dich richtig verstanden habe, willst du auf eine Schaltfläche klicken und dann soll es verschiedene Wege geben, wie die Datei weiter behandelt wird.
Ich habe es jetzt mal wie folgt gemacht:
1. Du klickst auf die SF
2. dann wirst du gefragt, ob die Datei gespeichert werden soll
3. danach wirst du gefragt, ob Excel auch gleich geschlossen werden soll
4. dann wird die Datei und, je nach Auswahl, Excel auch oder nicht, geschlossen.
Ist das so, wie du es haben möchtest?
Servus
AW: das mit onur ist...
10.12.2018 18:23:30
Oberschlumpf
Hi Herbert,
danke fürs Überlegen und sorry fürs Warten. Ich bin jetzt erst vom Arbeiten zu hause.
Nein, ganz so, wie von dir beschrieben, hab ich es nicht gemeint.
Ich nutze Excel 2013.
Bei mir gibt es unter DATEI die Auswahl SCHLIESSEN.
Wähle ich SCHLIESSEN aus, wird - nach Abfrage Speichern Ja/Nein/Abbrechen bei Klick auf Ja/Nein -
die Datei geschlossen. Excel bleibt weiterhin geöffnet.
Dann gibt es bei Excel (und auch bei jedem anderen Windows-Programm) oben rechts das X.
Ein Klick darauf bewirkt normalerweise, dass das ganze Programm geschlossen/beendet wird.
Bei meiner Datei wird leider auch nur wieder die Datei geschlossen, aber Excel bleibt geöffnet.
In meinem Fall erscheint bei vorherigen Veränderungen meine manipulierte Ja/Nein/Abbrechen-Speicherfrage.
Und jetzt hätte ich gern bei Klick auf Ja oder Nein, dass eben Excel komplett beendet wird.
Genau dafür fehlt mir noch der Code, bzw. der Befehl lautet ja einfach Application.Quit.
Nur dieser Quit-Befehl soll nur dann zum Einsatz kommen, wenn auch tatsächlich das X oben rechts zum Beenden eines Windows-Programms angeklickt wurde.
Ich weiß, dass ich die Befehle "Datei schließen" und "Klick auf X oben rechts" überwachen muss.
Aber ich weiß nicht wie.
Die Manipulation der Speicherabfrage kommt daher, weil die Datei nur mit aktivierten Makros lauffähig ist.
Und ja, der Hinweis von ich weiß nicht mehr wem, dass eben alle bis auf eine Tabelle ausgeblendet werden müssen, funktioniert tadellos. Aber das war ja auch nie meine Frage.
Hast du vielleicht noch eine Idee?
Ciao
Thorsten
AW: Wie unterscheide ich...
10.12.2018 09:57:35
Nepumuk
Hallo Thorsten,
ich bin mir ziemlich sicher, dass das nicht möglich ist. Es gibt zwar die Eigenschaft "Quitting" des Application-Objektes aber die ist (zumindest hier in Excel 2010) immer False.
Gruß
Nepumuk
AW: Wie unterscheide ich...
10.12.2018 18:27:44
Oberschlumpf
Hallo,
danke für den Hinweis.
Aber in Excel 2013 gibt es nur Application.Quit
Die Eigenschaft Application.Quitting wird mir mit Intellisense nicht vorgeschlagen.
Auch im Objekt-Katalog (F2) erscheint diese Eigenschaft nicht.
Danke.
Ciao
Thorsten
AW: Wie unterscheide ich...
10.12.2018 19:04:56
Nepumuk
Hallo Thorsten,
mach mal einen Rechtsklick in den Objektkatalog - Verborgene Elemente anzeigen und dann schau nochmal.
Gruß
Nepumuk
AW: Wie unterscheide ich...
10.12.2018 20:15:19
Oberschlumpf
Hallo,
:-) danke, wieder was gelernt.
Ja, Quitting gibt es auch in 2013. Wert = auch False; auch schreibgeschützt.
Ciao
Thorsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige