Anzeige
Archiv - Navigation
1240to1244
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

Schliessen ohne Speichern ? Nachfrage

Schliessen ohne Speichern ? Nachfrage
Urs
Guten Tag
Wie ergänze ich das Macro richtig damit der Ursprung der Tabelle erhalten bleibt.
  • 
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    *  Hier der Befehl zum Schliessen ohne Speichern und ohne Nachfragen, ob gespeichert
    *  werden soll.
    End Sub
    


  • Gruss urs
    ActiveWorkbook.Close savechanges = True
    08.12.2011 15:07:41
    robert
    Da ging was schief: OHNE SPEICHERN
    08.12.2011 15:14:08
    Urs
    Hallo robert
    Die Antwort kam schnell und ich bin für die Syntax dankbar, a b e r
    ich will schliessen ohne zu speichern, den die Tabelle soll beim Aufrufen immer dieselben Ursprungswerte haben.
    Gruss Urs
    was ging schief ? oT
    08.12.2011 15:16:25
    robert
    Es hat die Änderungen gespeichert o.T.
    08.12.2011 15:49:42
    Urs
    FALSE statt TRUE owT
    08.12.2011 15:50:37
    Rudi
    := sind auch noch erwünscht
    08.12.2011 15:56:23
    Urs
    Jep
    Und mit ....savechange:= False sagt der Debugger auch nichts mehr!!
    ohne := reklamierte er nur!!
    Vielen Dank für Eure Hilfe. Gruss Urs
    @Rudi, warum funkt das?
    08.12.2011 16:02:25
    robert
    
    Sub schl_ohne() ' schliessen ohne Änderungen
    ActiveWorkbook.Close savechanges = True
    End Sub
    
    Sub schl_mit()' schlöiessen mit Änderungen
    ActiveWorkbook.Close savechanges = False
    End Sub
    
    Gruß
    robert
    Anzeige
    Warum funkt das?
    08.12.2011 16:44:51
    Erich
    Hi Robert,
    das ist eigentlich klar.
    Wenn da "savechanges:=True" steht, sieht VBA eine Wertzuweisung an einen Parameter savechanges.
    Wenn da "savechanges=True" steht, sieht VBA keine solche Wertzuweisung.
    savechanges wird als Variable verwendet, und "savechanges=True" wird als normaler Ausdruck ausgewertet.
    Das Ergebnis des Ausdrucks "savechanges=True" ist False,
    also wird aus der Anweisung
    ActiveWorkbook.Close savechanges = True
    die Anweisung
    ActiveWorkbook.Close False
    Das ist die Kurzform von
    ActiveWorkbook.Close savechanges:=False
    oder
    ActiveWorkbook.Close savechanges:=(savechanges = True)
    Übrigens; Dieser "Scherz", dieses Missverständnis geht nur, weil "Option Explicit" im Modul fehlt...
    Alles klar?
    Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
    Anzeige
    Danke Erich-Option Explicit vergess ich "fast" nie
    08.12.2011 16:49:35
    robert
    AW: Schliessen ohne Speichern ? Nachfrage
    08.12.2011 15:24:21
    dan
    Hallo urs,
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    *  Hier der Befehl zum Schliessen ohne Speichern und ohne Nachfragen, ob gespeichert
    *  werden soll.
    ThisWorkbook.Close False
    End Sub
    
    Gruss dan
    Möglich
    08.12.2011 16:02:28
    Urs
    Hallo dan
    Hab mich zu der mit robert und rudi zusammengestellten Version entschieden.
    Braucht es vor Deinem False nicht noch ein savechange:= ?
    trotzdem vielen Dank. gruss urs
    AW: Möglich
    08.12.2011 16:54:20
    dan
    Hallo Urs,
    es ist vollkommen richtig wenn man den Argument-Namen benutzt, also:
    workbook.Close SaveChanges:=False
    Aber wenn man die Reihenfolge der Argumente einhaelt, dann kann man die Function Close auch ohne den Argument Namen rufen, also:
    workbook.Close False
    Aber mit dem Name ist es definitiev besser und der Code ist verstendlicher so.
    Gruss dan, cz.
    Anzeige
    muss nicht
    08.12.2011 16:56:40
    Erich
    Hi Urs,
    nein, das vorangestellte "savechanges:=" ist nicht nötig. ASchau mal in die VBA-Hilfe unter
    "Aufrufen von Sub- und Function-Prozeduren" (fundest du, wenn du in der Hilfe nach Funktion suchst).
    Zitat:
    Verwenden von Klammern beim Aufruf von Function-Prozeduren
    Damit Sie den Rückgabewert einer Funktion verwenden können, weisen Sie die Funktion einer Variablen zu,
    und schließen Sie die Argumente in Klammern ein. Beispiel:
    Antwort3 = MsgBox("Sind Sie mit Ihrem Gehalt zufrieden?", 4, "Frage 3")
    Wenn der Rückgabewert einer Funktion für Sie bedeutungslos ist, können Sie eine Funktion auf die gleiche Weise aufrufen,
    wie Sie eine Sub-Prozedur aufrufen. Lassen Sie die Klammern weg, listen Sie die Argumente auf,
    und weisen Sie die Funktion keiner Variablen zu. Beispiel:
    MsgBox "Aufgabe erledigt!", 0, "Aufgabe-Dialogfeld"
    Vorsicht Wenn Sie im vorhergehenden Beispiel Klammern angeben, verursacht die Anweisung einen Syntax-Fehler.
    Übergeben von benannten Argumenten
    Eine Anweisung in einer Sub- oder Function-Prozedur kann Werte an aufgerufene Prozeduren
    unter Verwendung von benannten Argumenten übergeben. Sie können die benannten Argumente
    in beliebiger Reihenfolge auflisten. Ein benanntes Argument besteht aus dem Namen des Arguments
    gefolgt von einem Doppelpunkt und einem Gleichheitszeichen (:=) sowie einem dem Argumente
    zugewiesenen Wert.
    In dem folgenden Beispiel wird die MsgBox-Funktion unter Verwendung von benannten Argumenten
    ohne Rückgabewert aufgerufen.
    MsgBox Title:="Aufgabe-Dialogfeld", Prompt:="Aufgabe erledigt!"
    In dem folgenden Beispiel wird die MsgBox-Funktion unter Verwendung von benannten Argumenten aufgerufen.
    Der Rückgabewert wird der Variablen Antwort3 zugewiesen.
    Antwort3 = MsgBox(Title:="Frage 3", _
    Prompt:="Sind Sie mit Ihrem Gehalt zufrieden?", Buttons:=4)
    (Ende des Zitats)
    Alles klar?
    Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
    Anzeige

    37 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige