Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1276to1280
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

(fast) alle Blätter ausblenden ohne Speichern?

(fast) alle Blätter ausblenden ohne Speichern?
29.09.2012 14:02:02
raspi
Kann ich beim Beenden (evtl mit before_close) alle Blätter bis auf eines ausblenden, auch ohne zu speichern?
Das Ausblenden im Prinzip funktioniert ja. Das Ziel ist, dass beim Öffnen nur dieses eine Blatt zu sehen sein soll, alle weiteren Blätter werden nach Berechtigung per Makro eingeblendet.
Wenn der User nun speichert, dann soll ja der Zustand so bestehen bleiben (alle berechtigten Blätter sichtbar), aber wenn er beendet und nicht speichern will, dann kann ich ja beim schliessen nicht die Blätter ausblenden und dann speichern, denn sonst würde ich ja auch alle Useränderungen mit übernehmen.
Problem ist also, wie kann ich erreichen, dass beim Start (auch bei abgeschaltetem Makros) nur dieses eine Blatt sichtbar ist, wenn der User beim Beenden nicht speichern möchte?
eine Idee
Danke

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: (fast) alle Blätter ausblenden ohne Speichern?
29.09.2012 14:34:48
Matze,Matthias
Auch ohne guten Tag,
nutze doch den Start der Arbeitsmappe
Private Sub Workbook_Open()
Dein Code zum Ausblenden der Sheets
End Sub

Gruß Matze

AW: (fast) alle Blätter ausblenden ohne Speichern?
29.09.2012 18:44:51
fcs
Hallo raspi,
du kanst mit dem before_Save arbeiten.
Vor dem Speichern werden die sichtbaren Blätter ermittelt, dann alle Blätter bis auf das Start-Blatt ausgeblendet und gespeichert. Anschließend die vorher sichtbaren Blätter wieder eingeblendet und der Speichern-Status auf gespeichert gesetzt.
Ein Sonderfall muss noch eingearbeitet werden, wenn bei der Sicherheitsabfrage beim Schliessen doch noch gespeichert werden soll.
Gruß
Franz
'Code unter diese Arbeitsmappe
Option Explicit
Dim bolClose As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
bolClose = True
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim arrVisible() As Long, iIndex As Integer, objSh As Object
ReDim arrVisible(1 To Me.Sheets.Count)
'Aktives Blatt merken
Set objSh = ActiveSheet
Application.ScreenUpdating = False
'aktuellen Sichtbar-Status merken
For iIndex = 1 To Me.Sheets.Count
arrVisible(iIndex) = Me.Sheets(iIndex).Visible
Next
'alle Blätter außer Blatt "Start" ausblenden
Me.Sheets("Start").Visible = xlSheetVisible
For iIndex = 1 To Me.Sheets.Count
If Me.Sheets(iIndex).Name  "Start" Then
If Me.Sheets(iIndex).Visible  xlSheetVeryHidden Then
Me.Sheets(iIndex).Visible = xlSheetVeryHidden
End If
End If
Next
If bolClose = False Then
'Datei Speichern
Application.EnableEvents = False
Me.Save
Cancel = True
Application.EnableEvents = True
'vorher sichtbare Blätter wieder einblenden
For iIndex = 1 To Me.Sheets.Count
If arrVisible(iIndex) = xlSheetVisible Then Me.Sheets(iIndex).Visible = xlSheetVisible
Next
objSh.Activate
'gespeichert Status auf True setzen
Me.Saved = True
End If
Application.ScreenUpdating = True
Erase arrVisible
bolClose = False
End Sub

Anzeige
AW: (fast) alle Blätter ausblenden ohne Speichern?
29.09.2012 19:04:11
Matze,Matthias
Hallo Franz,
Coole Lösung, aber ist denn meine obiger Vorschlag nicht der simpelste Weg, denn er verlangt doch lediglich,das egal ob gespeichert wird oder nicht, das beim Start nur das "eine" Blatt sichtbar ist.
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Sheets("BlattX").Visible = True 'Blattname anpassen
Sheets("BlattX").Select 'Blattname anpassen
Dim blatt As Object
For Each blatt In Sheets
If blatt.Name  ActiveSheet.Name Then
blatt.Visible = xlVeryHidden
End If
Next blatt
Application.ScreenUpdating = True
End Sub
Gruß Matze

Anzeige
AW: (fast) alle Blätter ausblenden ohne Speichern?
29.09.2012 21:31:42
raspi
Hey, da sind ja schon Antworten da... Super.
Hallo Franz, dein Beispiel probiere ich gleich mal aus.
Wobei ich zuvor noch grüble was das bolClose=True beim Before_Close bewirkt.
Ich wußte nicht, dass beim Schliessen nochmals Before_Save aufgerufen wird.
Oder kommt das zum Tragen, wenn beim Schliessen die Sicherheitsabfrage "Änderungen speichern?" mit JA beantwortet wird?
D.h. ich verstehe nicht ganz, was hier passieren soll.
Ich habe das Vertecken der Blätter beim Speichern und anschliessende Wiederanzeigen bei Before_Save bereits realisiert, wie auch von dir vorgeschlagen (allerdings nicht so schön implementiert :-)
Doch wenn ich schliessen, und die Sicherheitsabfrage mit NEIN beantworte, dann wird doch die Mappe direkt geschlossen ohne nochmals zu Before_Save zu gehen, oder nicht? Und dann würde doch auch dein Flag nichts bewirken (und im anderen Fall eher das Gegenteil). Oder stehe ich auf dem Schlauch?

Anzeige
AW: (fast) alle Blätter ausblenden ohne Speichern?
29.09.2012 21:32:28
raspi
Hey, da sind ja schon Antworten da... Super.
Hallo Franz, dein Beispiel probiere ich gleich mal aus.
Wobei ich zuvor noch grüble was das bolClose=True beim Before_Close bewirkt.
Ich wußte nicht, dass beim Schliessen nochmals Before_Save aufgerufen wird.
Oder kommt das zum Tragen, wenn beim Schliessen die Sicherheitsabfrage "Änderungen speichern?" mit JA beantwortet wird?
D.h. ich verstehe nicht ganz, was hier passieren soll.
Ich habe das Vertecken der Blätter beim Speichern und anschliessende Wiederanzeigen bei Before_Save bereits realisiert, wie auch von dir vorgeschlagen (allerdings nicht so schön implementiert :-)
Doch wenn ich schliessen, und die Sicherheitsabfrage mit NEIN beantworte, dann wird doch die Mappe direkt geschlossen ohne nochmals zu Before_Save zu gehen, oder nicht? Und dann würde doch auch dein Flag nichts bewirken (und im anderen Fall eher das Gegenteil). Oder stehe ich auf dem Schlauch?

Anzeige
AW: (fast) alle Blätter ausblenden ohne Speichern?
29.09.2012 22:17:30
raspi
@Matze:
Jetzt habe ich mein Workbook_Open nochmals kontrolliert und hier noch das richte Script gleich zu Beginn eingebaut. Irgendwie hatte das bei den vorherigen Versuchen nicht geklappt, zw. Excel hat mir immer was anderes vorgegaukelt.
Ich habe nun beide Lösungen kombiniert und denke, ich bin auf dem richtigen Weg. Muss nochmals prüfen, welche Alternativen es noch geben kann.
Aber zusätzlich eine Frage: Kann ich denn auf die Excel-eigene Sicherheitsabfrage "Möchten Sie vor dem Schliessen speichern" verhidnern oder noch besser auf die Antwort reagieren?
Ich habe ein eigenes Form, aber die andere Abfrage kommt dennoch-

Anzeige
AW: (fast) alle Blätter ausblenden ohne Speichern?
30.09.2012 09:48:33
Matze,Matthias
Hallo Raspi,
Wenn du weitere Fragen hast, solltest du den "Haken" setzen (Aktiviere das Kontrollkästchen, wenn die Frage mit diesem Beitrag nicht beantwortet wurde und der Thread weiter bei den offenen Fragen angezeigt werden soll ) das wahr vorher mit offene Frage einfacher lol.
Zu deinem Code: Was genau willst du erreichen? Du springst mit deinen Gedankengängen hin und her.
benutze ThisWorkbook.Close
Gruß Matze

bissel was bergessen,...
30.09.2012 09:54:17
Matze,Matthias
This Workook.Close False

AW: (fast) alle Blätter ausblenden ohne Speichern?
30.09.2012 13:33:02
fcs
Hallo raspi,
Kann ich denn auf die Excel-eigene Sicherheitsabfrage "Möchten Sie vor dem Schliessen speichern" verhidnern oder noch besser auf die Antwort reagieren?
Die Anzeige des Warndialogs vor dem Schliessen der Datei kannst du nur verhindern, indem vor dem Schliessen der Datei ggf. der Saved-Status der Datei (Workbook) bewußt auf True gesetzt wird, wenn man nach dem Speichern der Datei noch wieder Ändernderungen per Makro gemacht hat (z.B. ein/ausblenden von Blättern) macht. Auf die Aktionen in diesem Dialog kannst du nicht speziell reagieren, du muss jedoch beachten, das ggf. das Workbook_BeforeSave-Ereignis ausgelöst wird.
Insgesamt ist es aber immer relativ kompliziert, wenn man versucht über die Ereignismakros sicherzustellen, dass die Datei in einem bestimmten Zustand gespeichert sein muss. Speziell wenn man gleichzeitig sicherstellen möchte, dass das Schliessen ohne Speichern gewährleistet sein soll.
Zu dem "bolClose" in meinem Makro.
Dies dient dazu, den Ablauf zu steuern, wenn im Schließen-Warndialog der "Speichern-Button" gedrückt wird. Dann wird das BeforeSave-Ereignismakro ja auch ausgeführt, aber es dürfen dann natürlich im Ablauf die Blätter nicht wieder eingeblendet werden.
Gruß
Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige