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

nur bestimmte Tabellen nicht autom. löschen

nur bestimmte Tabellen nicht autom. löschen
22.10.2007 10:46:27
Peter
Guten Tag
Ich habe in einer Datei eine Worksheet mit dem Namen "Details" und ein Worksheet "Uebersicht" mit einer Pivottabelle als Auswertung der Tabelle Details.
Bei Doppelklick auf ein Feld der Pivottabelle wird ein neues Worksheet angelegt.
Nun möchte ich einen Code in die Tabelle integrieren, der bewirkt, dass beim Schliessen der Tabelle, auch wenn die Tabelle grundsätzlich gespeichert wird, alle anderen Tabellen ausser "Details" und "Uebersicht" gelöscht werden, ohne dass diese Aktion bestätigt werden muss.
Kann mir jemand eine Hilfestellung geben, wie das zu geschehen hat?

Private Sub App_WorkbookBeforeClose(ByVal Wb as Workbook, _
Cancel as Boolean)
If Me.Saved = False Then exit sub    'nur notwendig, wenn Datei gespeichert wurde
''' alle Worksheets ausser "Details und "Uebersicht" löschen
ActiveWorkbook.Close True
End Sub


8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nur bestimmte Tabellen nicht autom. löschen
22.10.2007 10:56:28
Worti
Hallo Peter,
so:
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name "Details" And ws.Name "Uebersicht" Then
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End If
Next ws
Gruß Worti

AW: nur bestimmte Tabellen nicht autom. löschen
22.10.2007 11:20:00
Peter
Hallo Worti
Vielen Dank. Ich hab's mal so probiert, doch bisher haben alle übrigen Tabellen das Schliessen der Datei überstanden (Code steht auf "DieseArbeitsmappe"). Was habe ich noch übersehen, dass die überflüssigen Sheets nicht gelöscht wurden?
Danke und Gruss, Peter
Option Explicit

Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, _
Cancel As Boolean)
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name  "Details" And ws.Name  "Uebersicht" Then
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End If
Next ws
ActiveWorkbook.Close True
End Sub


Anzeige
AW: nur bestimmte Tabellen nicht autom. löschen
22.10.2007 11:32:32
Worti
Hallo Peter,
hast du mal einen Break-Point gesetzt und geschaut, ob Xl beim Schließen in das Modul kommt?
Gruß Worti

AW: nur bestimmte Tabellen nicht autom. löschen
22.10.2007 11:40:49
Erich
Hallo Peter,
wieso verwendest du nicht6 das Workbook-Ereignis
Workbook_BeforeClose(Cancel As Boolean)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: nur bestimmte Tabellen nicht autom. löschen
22.10.2007 11:50:44
Peter
Hallo Erich
Das habe ich auch gerade entdeckt, auch wenn ich nicht weiss, wann man dann das "App_WorkbookBevoreClose" braucht.
Jetzt funktioniert das Löschen, was jedoch noch nicht wunschgemäss läuft ist folgendes:
Wenn eine Änderung im Workbook vorgenommen wurde, sollte trotzdem nachgefragt werden, ob ich speichern will.
Wenn ich nicht speichern will, muss ich die Möglichkeit haben, die Änderungen zu verwerfen.
Auch in diesem Fall müssen Tabellen, die nicht "Uebersicht" oder "Details" heissen, gelöscht werden, da ja unter Umständen eine Zwischenspeicherung erfolgt sein könnte.
Notwendige Arbeitsschritte, wenn Datei geschlossen wird
1. wenn eine Änderung erfolgt ist, muss gefragt werden, ob gespeichert werden soll
2. entweder speichern oder nicht speichern, in jedem Fall jedoch Tabellen, die nicht "Uebersicht" oder "Details" heissen, vorgängig eines allfälligen speicherns löschen
3. Datei schliessen
Gruss, Peter

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'

Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, _
Cancel As Boolean)
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name  "Details" And ws.Name  "Uebersicht" Then
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End If
Next ws
ActiveWorkbook.Close True
End Sub


Anzeige
AW: nur bestimmte Tabellen nicht autom. löschen
22.10.2007 19:53:40
Erich
Hallo Peter,
mir ist nicht klar, was du insgesamt erreichen willst.
Willst du sicherstellen, dass die Mappe nie mit mehr als den beiden genannten Blättern gespeichert ist?
Dann müsste das Löschen der anderen Blätter z. B. beim BeforeSave-Ereignis erfolgen.
Oder geht es dir nur um den Service, die durch Pivot-Doppelklick erzeugten Blätter
schnell und einfach wieder loszuwerden? In diesem Fall wäre das wohl ausreichend:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
If ws.Name  "Details" And ws.Name  "Uebersicht" Then ws.Delete
Next ws
Application.DisplayAlerts = True
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: nur bestimmte Tabellen nicht autom. löschen
22.10.2007 20:16:00
Peter
Hallo Erich
Es ist das erstere: Ich möchte gerne sicherstellen, dass die Mappe nie mehr als den beiden genannten Blättern gespeichert ist.
Freundlicher Gruss, Peter

AW: nur bestimmte Tabellen nicht autom. löschen
23.10.2007 08:35:05
Peter
Guten Tag
Der Hinweis auf das BeforeSave Event hatte es in sich. Mit nachstehendem Code konnte ich die Lösung erarbeiten. Nochmals danke für den Hinweis.
Peter
Option Explicit

Private Sub Workbook_BeforeSave( _
ByVal SaveAsUI As Boolean, _
Cancel As Boolean)
Dim wks As Worksheet
Application.DisplayAlerts = False
For Each wks In ThisWorkbook.Worksheets
If wks.Name  "Details" And wks.Name  "Uebersicht" Then wks.Delete
Next wks
Application.DisplayAlerts = True
End Sub


Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige