Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
668to672
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
668to672
668to672
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Cancel

Cancel
17.09.2005 09:52:01
Rene
Moin zusammen,
Es hat sich wieder mal bei meinen Prog. ein Problem ergeben.Mit diesem Code:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
End Sub

erreicht man ja das die Tabelle nicht gespeichert werden kann.Und dieses ist mein Problem,gibt es eine Möglichkeit diese Anweisung kurzfristig zu deaktivieren? Diese müßte sein weil wenn man auf den CommandButton1 klickt dann muß der Inhalt der Tabelle in einen Ordner gespeichert werden können.Aber eben nur dann.Ich habe es so probiert:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim CommandButton1_Click As Object
If CommandButton1_Click = True Then
Cancel = False
Else
Cancel = True
End If
End Sub

aber dann bekomme ich den Fehler 91 - Objektvariable oder With-Blockvariable nicht festgelegt
Könnte mir einer dabei auf die Sprünge helfen?
gruß Rene

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Cancel
17.09.2005 10:40:55
Ramses
Hallo
"...aber dann bekomme ich den Fehler 91..."
Ist ja Klar, du hast auch kein Object das du abfragen kannst.
Setz in einem Modul deiner Mappe noch VOR allen anderen Makros die Zeile
Public AllowSave As Boolean
in das Workbook_Open Ereignis setzt du zusätzlich die Anweisung

Private Sub Workbook_Open()
AllowSave = False
End Sub

Nun kannst du im Before Save Makro ganz einfach abfragen:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If AllowSave = False then
Cancel = True
end If
End Sub

Die Variable "AllowSave" kannst du nun irgendwo in deinem Code auf TRUE setzen, dann kannst du speichern, ansonsten eben nicht.
Gruss Rainer
Anzeige
AW: Cancel
17.09.2005 11:33:24
Rene
Hallo Ramses,
Ach du sch.... habe im falschen Tread geantwortet.Es muß hier rein.
Danke dir für deine schnelle Antwort habe es damit genauso hinbekommen wie ich es wollte.Nun habe ich aber leider noch eine Frage.
Wenn ich Excel über das Schließen Kreuz schließe, dann muß ich immer zweimal auf das Kreuz klicken.Ich denke mal das es an diesem liegt:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
Application.ScreenUpdating = False
ActiveWorkbook.Worksheets("Error").Visible = True
For Each ws In ActiveWorkbook.Worksheets
If ws.name <> "Error" Then
ws.Visible = xlSheetVeryHidden
End If
Next
ActiveWorkbook.Save
ThisWorkbook.Close False 'schließt die Tabelle ohne zu speichern
End Sub

Der Sheet "Error" kommt wenn man die Macro Betätigung beim öffnen nicht aktiviert diesen Sheet müßte ich also haben.Nehme ich aus dem Macro dieses herraus:
ThisWorkbook.Close False 'schließt die Tabelle ohne zu speichern
dann kommt die Abfrage " Möchten sie die Tabelle speichern? Ja Nein Abbrechen"
Wie kann ich das nun erreichen das die Abfrage nicht mehr kommt und Excel beim ersten drücken auf das Schließen-Kreuz beendet wird. Könntest du mir dabei auch noch helfen?
Gruß Rene
Anzeige
AW: Cancel
17.09.2005 11:46:21
Ramses
Hallo
Ohne Garantie, aber probiers mal

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
Application.ScreenUpdating = False
ActiveWorkbook.Worksheets("Error").Visible = True
For Each ws In ActiveWorkbook.Worksheets
If ws.name <> "Error" Then
ws.Visible = xlSheetVeryHidden
End If
Next
AllowSave = True
ActiveWorkbook.Save
ThisWorkbook.Close False 'schließt die Tabelle ohne zu speichern
End Sub

Gruss Rainer
AW: Cancel
17.09.2005 12:18:24
Rene
Hi Ramses,
Geht leider nicht.Wenn ich es so mache:
AllowSave = True
ActiveWorkbook.Save
'ThisWorkbook.Close False 'schließt die Tabelle ohne zu speichern
dann schließt er mir zwar beim ersten mal gleich, aber es wird die Tabelle gespeichert.Mach ich es so:
AllowSave = True
ActiveWorkbook.Save
ThisWorkbook.Close False 'schließt die Tabelle ohne zu speichern
dann bleibt es wie gehabt nur es speichert mir die Tabelle.
Wenn ich die ThisWorkbook.Close Anweißung und die AllowSave Anweißung rausnehme kommt zwar die Abfrage speichern ja oder nein klickt man auf ja speichert es aber nichts laut der Uhrzeit. Es kommt aber immer die Abfrage Speichern ja oder nein.
Sehr merkwürdig.
Hast du noch eine Rat?
gruß rene
Anzeige
AW: Cancel
17.09.2005 17:00:12
Leo
Hi,
''In einem Standardmodul
Option Explicit
Public bSpeichernVerboten As Boolean
''Im Modul "DieseArbeitsmappe
Option Explicit

Private Sub Workbook_Activate()
bSpeichernVerboten = True
End Sub


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = bSpeichernVerboten
End Sub


Private Sub Workbook_Deactivate()
bSpeichernVerboten = False
End Sub

''Der Code des Button

Private Sub CommandButton1_Click()
bSpeichernVerboten = False
ThisWorkbook.Save
bSpeichernVerboten = True
End Sub

mfg Leo
Anzeige
AW: Cancel
17.09.2005 18:03:48
Rene
Hallo Leo,
Danke auch dir für deine Antwort, habe es auch so gemacht und das mit dem speichern klappt auch,wenn ich das Schließen-Kreuz nun klicke kommt immer noch die Abfrage ob gespeichert werden soll oder nicht und ich möchte aber NICHT das die Abfrage erscheint.
Hast du noch eine Idee wie ich das lösen könnte?
Gruß Rene
AW: Cancel
17.09.2005 18:12:50
Leo
Hi,
was soll denn passieren, wenn das Schließkreuz geklickt wird und die Datei verändert aber nicht gespeichert wurde?
mfg Leo
AW: Cancel
17.09.2005 18:50:26
Rene
Hallo Leo,
Es soll Excel und die Tabelle geschlossen werden. Gespeichert wird nur wenn man auf den CommandButton1 klickt und dann wird auch nur ein Teil gespeichert.Ansonsten sollen meine Kollegen die Tabelle nicht speichern oder Speichern unter auswählen können.
Gruß Rene
Anzeige
AW: Cancel
17.09.2005 19:21:31
Leo
Hi,

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If bSpeichernVerboten Then
ThisWorkbook.Saved = True
Application.Quit
Else
ThisWorkbook.Save
Application.Quit 'wenn auch hier Excel geschlossen werden soll
End If
End Sub

mfg Leo
AW: Cancel
17.09.2005 19:31:37
Rene
Hi Leo,
Er gibt mir "Variable nicht definiert" und markiert blau "bSpeichernVerboten"
Was wär das denn für eien Variable?
Dim bSpeichernVerboten as ?
gruß Rene
AW: Cancel
17.09.2005 19:34:56
Eule
Hi Rene
ich weiß nicht, wo/wie du die Variable befüllst, aber probiers mal mit Boolean(=WAHR/FALSCH)
Gruss Eule
Nun geht es!!!
17.09.2005 19:36:10
Rene
Hi Leo,
Hatte mich Vertan es fehlte eine Abfrage und nun geht es so wie ich möchte.
Danke dir noch tausend mal.
Gruß Rene
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige