PDA

Vollständige Version anzeigen : Frage zu auto_close Makro


prinzeri
27.08.2001, 10:19
Welchen Befehl muss ich in einem auto_close Makro verwenden, damit die Datei doch nicht geschlossen wird?

<p align="left"><font size="1" face="Century Gothic"><font color="#000000">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurde in diesem Beitrag ein Link entfernt.</font>

jinx
27.08.2001, 16:46
<font size="2" face="Century Gothic">Moin, prinzeri,

vielleicht hilft das Einfügen einer MsgBox bzw. das Verwenden der folgenden Maßnahmen nach Herber (Hinweis: Bei „JA“ wird Mappe gespeichert bzw. Dialog zum Speichern unter erscheint!):

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Sub</span> AbfrageBeiSchliessen()
<span class="TOKEN">Dim</span> Antwort%
<span class="TOKEN">Dim</span> Msg$
Msg = &quot;Soll die Arbeitsmappe geschlossen werden?&quot;
Select Case MsgBox(Msg, vbInformation + vbYesNoCancel)
Case vbYes: ActiveWorkbook.Close savechanges:=True
Case vbNo: <span class="TOKEN">Call</span> WeiterBeiNein
Case vbCancel: <span class="TOKEN">Call</span> WeiterBeiAbbruch
<span class="TOKEN">End</span> Select
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span><hr>&nbsp;
<span class="TOKEN">Public Sub</span> WeiterBeiNein()
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span><hr>&nbsp;
<span class="TOKEN">Public Sub</span> WeiterBeiAbbruch()
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

wobei Du für die Makros WeiterBeiNein bzw. WeiterBeiAbbruch ggf. noch weitere Befehlsfolgen angeben kannst, ansonsten wird über sie hinweggegangen bzw. sie können mitsamt Aufurf weggelassen werden.

Gib dem Anwender die Möglichkeit eines Abbruches, bevor es zu AutoClose kommt.
Diese Anweisung sollte dann wirklich nur noch eins: beenden - entweder mit speichern oder ohne, aber nicht noch einmal zurück (wenn Du eine Datei öffnest, fragst Du ja auch nicht noch einmal nach, ob der Anwender denn auch wirklich... - oder????)

<font color="#808080" size="3" face="Arial Black">cu
jinx</font>

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten und die Signatur angepasst...</font>

prinzeri
28.08.2001, 06:23
Hallo Jinx.
Danke für Deine Antwort. Allerdings war es wirklich so gedacht, dass der "schliessen"-Befehl unter bestimmten Bedingungen durch das Makro abgebrochen werden soll. Das Excel-Sheet soll durch relativ unbedarfte Anwender mit Zahlen gefüllt werden. Beim schliessen der Datei sollen bestimmte Felder auf Plausibilität überprüft werden. Ist da was nicht in Ordnung soll eine Fehlermeldung erscheinen und die Datei möglichst nicht geschlossen werden. Die selbständige Ausführung eines Prüfmakros vor dem schliessen der Mappe kann ich denen fast nicht zumuten. Scheint wohl aber nicht anders möglich zu sein.
prinzeri

jinx
28.08.2001, 06:48
<font size="2" face="Century Gothic">Moin, prinzeri,

die Plausibilitätsprüfung kann doch z.B. vor dem Bereich der MsgBox durchgeführt werden, und je nach Ergebnis (If..Then..ELSE) unterschiedliche Mitteilungen bzw. Aktionen hervorrufen. Dies kann zu "Speichern der Mappe" (wer vergibt denn den Namen oder wird immer überschrieben?) zu "Fehlerhafte Eingabe" (mit erläuternden Hilfetexten!) führen...

Vorbedingung dann: Schalter Beenden und Abbrechen

<font color="#808080" size="3" face="Arial Black">cu
jinx</font>

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurde in diesem Beitrag die Signatur angepasst...</font>

prinzeri
28.08.2001, 06:57
Hallo Jinx.

Wenn ich das in ein auto_close-Makro einbaue wird die Arbeitsmappe aber in jedem Fall geschlossen. Und genau das will ich ja bei einer falschen Eingabe verhindern.

prinzeri

CWM
29.08.2001, 19:52
Hi!

Mußt Du unbedingt ein Auto_Close-Makro verwenden oder geht auch das Workbook_BeforeClose()-Ereignis?
Wenn Du Excel 97 oder höher verwendest, dann nimm möglichst das BeforeClose-Ereignis.

Deklaration in ThisWorkbook:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

Wenn Du das Schließen doch noch unterbinden willst, dann setze einfach Cancel=True.
Excel schließt dann die Datei nicht.

Ich hoffe, das hilft Dir

Christoph