Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1648to1652
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

Makro Tabellenblätter löschen anhand einer Liste

Makro Tabellenblätter löschen anhand einer Liste
17.10.2018 10:30:33
claus
Hallo Zusammen,
ich brauche mal wieder die Hilfe der Excel Community.
Ich habe eine Tabelle mit ca. 50 Tabellenblätter. Da diese voller Formel ist, habe ich das Problem, dass diese SEHR langsam läuft. Da ich nicht immer so viele Tabellenblätter brauche wollte ich gerne ein Makro hinzufügen die Tabellenblätter die auf einer Liste (Spalte A) des Tabellenblattes "TBLöschen" stehen löschen. Somit kann ich immer die Tabellenblätter die ich nicht brauche löschen. In der Spalte A im Tabellenblatt "TBLöschen" würden immer unterschiedliche Namen stehen. Da es immer unterschiedliche Tabellenblätter sind die ich löschen müsste.
Vielen lieben Dank für eure Hilfe.
Viele Grüße
Claus

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Tabellenblätter löschen anhand einer Liste
17.10.2018 10:56:43
Werner
Hallo Claus,
zum Beispiel so:
Option Explicit
Public Sub Blätter_löschen()
Dim loLetzte As Long, i As Long
With Worksheets("Tabelle1") 'Blatt mit Blattnamen in Spalte A
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
Application.DisplayAlerts = False
For i = 1 To loLetzte
On Error Resume Next
Worksheets(CStr(.Cells(i, 1))).Delete
On Error GoTo 0
Next i
Application.DisplayAlerts = True
End With
End Sub
Code gehört in ein allgemeines Modul.
Gruß Werner
AW: Makro Tabellenblätter löschen anhand einer Liste
17.10.2018 18:10:29
claus
Hallo Werner,
vielen Dank für die Rückmeldung. Es funktioniert einwandfrei. Ich habe jetzt nur das Problem, dass er die Tabellenbätter nach und nach löscht, somit berechnet er nach jedem löschen neu und es dauert lange bis er alle gelöscht hat. Besteht die Möglichkeit, dass man ersteinmal alle Tabellenblätter die man löschen will auswählt und dann erst löscht?
Vielen lieben Dan.
Viele Grüße
Claus
Anzeige
AW: Makro Tabellenblätter löschen anhand einer Liste
17.10.2018 18:27:11
Werner
Hallo Claus,
dann versuch mal:
Option Explicit
Public Sub Blätter_löschen()
Dim loLetzte As Long, i As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
With Worksheets("Tabelle1") 'Blatt mit Blattnamen in Spalte A
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
Application.DisplayAlerts = False
For i = 1 To loLetzte
On Error Resume Next
Worksheets(CStr(.Cells(i, 1))).Delete
On Error GoTo 0
Next i
Application.DisplayAlerts = True
End With
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Gruß Werner
Anzeige
AW: Makro Tabellenblätter löschen anhand einer Li
17.10.2018 18:38:20
Daniel
Hi
Variante 1: ohne Fehlerprüfung, dh alle gelistetetn Blätterm müssen vorhanden sein, die Auflistung muss in Spalte in einem Lückenlosen Block erfolgen:
Sub test1()
Dim tbl
tbl = Sheets("Tabelle1").Columns(1).SpecialCells(xlCellTypeConstants, 3)
tbl = WorksheetFunction.Transpose(tbl)
Sheets(tbl).Select
End Sub
Variante 2: mit fehlerprüfung, dh wenn ein nicht vorhandenes Blatt gelistet ist, dann macht das nichts.
Sub test2()
Dim checkSel As Boolean
Dim tbl
checkSel = True
For Each tbl In Sheets("Tabelle1").Columns(1).SpecialCells(xlCellTypeConstants, 2).Value
On Error Resume Next
ThisWorkbook.Sheets(tbl).Select checkSel
If Err = 0 Then checkSel = False
On Error GoTo 0
Next
If Not checkSel Then ActiveWindow.SelectedSheets.Delete
End Sub
achso ja, das Application.DisplayAlerts = False könntest du noch einbauen.
Gruß Daniel
Anzeige
AW: Makro Tabellenblätter löschen anhand einer Li
18.10.2018 09:51:07
claus
Vielen Dank für die Rückmeldung .Die Variante 1 finde ich sehr gut. Wie kann ich am Ende dem System noch sagen: "lösche die ausgewählten Tabellenblätter ohne nachzufragen".
Ich habe am Ende...
ActiveWindow.SelectedSheets.delete
Application.DisplayAlerts = False
... hinzugefügt aber die Meldung ob ich tatsächlich die Tabellenblätter löschen will kommt trotzden.
Was mache ich falsch?
So sieht es aktuell aus:
Sub test1()
Dim tbl
tbl = Sheets("TBL").Columns(4).SpecialCells(xlCellTypeConstants, 3)
tbl = WorksheetFunction.Transpose(tbl)
Sheets(tbl).Select
ActiveWindow.SelectedSheets.delete
Application.DisplayAlerts = True
End Sub

Anzeige
AW: Makro Tabellenblätter löschen anhand einer Li
18.10.2018 10:40:49
claus
Vielen Dank für die Rückmeldung .Die Variante 1 finde ich sehr gut. Wie kann ich am Ende dem System noch sagen: "lösche die ausgewählten Tabellenblätter ohne nachzufragen".
Ich habe am Ende...
ActiveWindow.SelectedSheets.delete
Application.DisplayAlerts = False
... hinzugefügt aber die Meldung ob ich tatsächlich die Tabellenblätter löschen will kommt trotzden.
Was mache ich falsch?
So sieht es aktuell aus:
Sub test1()
Dim tbl
tbl = Sheets("TBL").Columns(4).SpecialCells(xlCellTypeConstants, 3)
tbl = WorksheetFunction.Transpose(tbl)
Sheets(tbl).Select
ActiveWindow.SelectedSheets.delete
Application.DisplayAlerts = True
End Sub

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige