Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tabellenblätter variabel löschen

Tabellenblätter variabel löschen
10.09.2014 10:47:38
Johannes
Hallo liebes Forum,
ich sitz mal wieder 'fest'. Folgende Situation: Ich habe eine Tabelle in der mehrere Zeilen der Reihe nach ausgefüllt werden. Per VBA wird für jede gefüllte Zeile ein Tabellenblatt angelegt und nach der ersten Zelle benannt. Soweit funktioniert alles einwandfrei. Wenn jetzt Zeilen gelöscht werden möchte ich das beim Aktualisieren die Tabellenblätter auch gelöscht werden die nicht mehr aktuell sind.
Einfacher: Alle Tabellenblätter (außer die 2 Masterblätter) löschen und dann wieder neu generieren.
Hat jemand eine Idee wie ich alle Tabellenblätter bis auf die 2 Masterblätter löschen kann?
Danke für eure Hilfe.
Johannes

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter variabel löschen
10.09.2014 10:55:53
yummi
Hallo Johannes,
entweder beim Löschen der Zeile noch zusätzlich:
z.B. für zeile x (welche Zeile du löschen willst weisst du ja
Worksheets(richtigeSheet.Cells(x, 1).value).Delete
oder wenn du alle löschen willst bis auf deine Master:

function Loeschen()
Dim objBlatt As Worksheet
Application.DisplayAlerts = False
For Each objBlatt In Sheets
If objBlatt.Name  "Master1" and objBlatt.Name  "Master2" Then objBlatt.Delete
Next
Application.DisplayAlerts = True
End function
Gruß
yummi

Anzeige
AW: Tabellenblätter variabel löschen
10.09.2014 10:56:13
Christian
Hallo Johannes,
so zB (Tab-Namen entsprechend anpassen):
Option Explicit
Sub DeleteWorkSheets()
Dim wks as Worksheet
Application.DisplayAlerts = False
For Each wks in ThisWorkbook.WorkSheets
If wks.Name  "Master-1" And wks.Name  "Master-2" Then
wks.Delete
End if
Next
Application.DisplayAlerts = True
End Sub
Gruß
Christian

Anzeige
and?
10.09.2014 10:59:22
Jack_d
müsste es nicht "or" sein?
Grüße

AW: and?
10.09.2014 11:03:37
Johannes
Funktioniert perfekt! Danke

AW: and?
10.09.2014 11:06:14
yummi
Halo Jack,
wenn du da or nimmst, dann löscht du alles!!!
wenn du auf das sheet master1 kommst dann schlägt der 2. teil der Bedingung zu und du löscht
wenn du auf das sheet master2 kommst dann schlägt der 1. teil der Bedingung zu und du löscht
Demzufolge sind dann alle Tabellenblätter gelöscht
Gruß
yummi

Anzeige
Tacho
10.09.2014 11:13:40
Jack_D
Krieg ich grad nicht aufn Tacho.
Ein blattname kann doch nicht 2 Zustände (Namen) annehmen.
In meiner Logik müsste die frage dann doch eigentlich oder sein.
Vielleicht fehlt mir heut das vba -Gen.😝
Grusse

Wenn nicht das eine UND nicht das andere, dann ...
10.09.2014 11:21:29
Christian
jetzt klarer?
Gruß
Christian

macht Sinn
10.09.2014 11:27:29
Jack_d
Mit einfachen Logiken hatte ich schon immer meine Probleme o.O
Grüße und Danke für die Erläuterung

Anzeige
Ja, And !
10.09.2014 11:06:25
Christian
Gruß
Christian

AW: Besser Select Case
10.09.2014 11:10:05
Daniel
Hi
wenn mehrere Blätter "verschont" werden sollen, ist Select Case verständlicher als IF-THEN
for each sh in activeworkbook.worksheets
Application.DisplayAlerts = false
select case sh.Name
Case "Master-1", "Master-2"
Case else
sh.delete
end Select
Application.DisplayAlerts = true
Gruß Daniel

Anzeige
AW: Tabellenblätter variabel löschen
10.09.2014 10:57:34
Jack_d
Hallo Johannes
also ich hab ne ne Idee
Sub löschen
dim Arbeitsblatt als Arbeitsblatt
Dim Mappe als Excelmappe
für jedes Arbeitsblatt in dieser Excelmappe
wenn Arbeitsblatt.Name  Master 1 oder Arbeitsblatt.Name  Master 2 dann
lösche das Arbeitsblatt
ende wenn
ende Sub
Grüße

Anzeige
AW: Tabellenblätter variabel löschen
10.09.2014 11:03:07
Johannes
Danke danke danke! Hab´s anhand Christians Lösungsvorschlag umgesetzt! Klappt perfekt!!!
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Tabellenblätter variabel löschen


Schritt-für-Schritt-Anleitung

Um mehrere Arbeitsblätter in Excel zu löschen, wobei nur bestimmte Blätter erhalten bleiben, kannst du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Erstelle ein neues Modul: Klicke im Menü auf Einfügen > Modul.

  3. Füge den folgenden Code ein:

    Sub TabellenblaetterLoeschen()
       Dim ws As Worksheet
       Application.DisplayAlerts = False
       For Each ws In ThisWorkbook.Worksheets
           If ws.Name <> "Master1" And ws.Name <> "Master2" Then
               ws.Delete
           End If
       Next ws
       Application.DisplayAlerts = True
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus: Drücke ALT + F8, wähle TabellenblaetterLoeschen und klicke auf Ausführen.

Mit diesem Skript kannst du mehrere Tabellenblätter löschen, während die Masterblätter erhalten bleiben.


Häufige Fehler und Lösungen

  • Fehler: Das Makro löscht auch die Masterblätter.

    • Lösung: Stelle sicher, dass die Bedingung im If-Statement korrekt formuliert ist (Verwendung von <> für "nicht gleich").
  • Fehler: VBA meldet einen Fehler beim Ausführen des Makros.

    • Lösung: Überprüfe, ob die Namen der Masterblätter exakt stimmen. Achte auf Groß- und Kleinschreibung.

Alternative Methoden

Eine alternative Methode, um mehrere Blätter gleichzeitig zu löschen, ist die Verwendung der Select Case-Anweisung. Hier ein Beispiel:

Sub LoeschenMitSelectCase()
    Dim sh As Worksheet
    Application.DisplayAlerts = False
    For Each sh In ThisWorkbook.Worksheets
        Select Case sh.Name
            Case "Master-1", "Master-2"
                ' Nichts tun
            Case Else
                sh.Delete
        End Select
    Next sh
    Application.DisplayAlerts = True
End Sub

Diese Methode ist besonders nützlich, wenn du viele Blätter hast, die du nicht löschen möchtest.


Praktische Beispiele

  1. Beispiel für das Löschen spezifischer Blätter:

    • Angenommen, du hast Blätter mit den Namen "Daten", "Bericht", "Master1" und "Master2". Mit dem oben genannten Makro werden nur "Daten" und "Bericht" gelöscht.
  2. Beispiel für das Leeren von Blättern:

    • Wenn du ein Tabellenblatt leeren, aber nicht löschen möchtest, kannst du den folgenden Code verwenden:
    Sub LeerenTabellenblatt()
       Dim ws As Worksheet
       Set ws = ThisWorkbook.Worksheets("Daten")
       ws.Cells.Clear
    End Sub

Tipps für Profis

  • Backup erstellen: Bevor du mehrere Tabellenblätter löscht, erstelle immer eine Sicherheitskopie deiner Datei.
  • Fehlerbehandlung einfügen: Füge eine Fehlerbehandlung in dein Makro ein, um unerwartete Probleme zu vermeiden.
  • Testen: Teste dein Makro zuerst mit einer Kopie deiner Datei, um sicherzustellen, dass es wie gewünscht funktioniert.

FAQ: Häufige Fragen

1. Wie lösche ich mehrere Blätter in Excel ohne VBA? Du kannst mehrere Blätter manuell löschen, indem du die Strg-Taste gedrückt hältst und die gewünschten Blätter anklickst. Klicke dann mit der rechten Maustaste und wähle Löschen.

2. Was passiert, wenn ich Application.DisplayAlerts = False nicht verwende? Ohne diese Zeile wirst du vor jedem Löschen eines Blattes nach Bestätigung gefragt, was den Prozess verlangsamen kann, wenn du viele Blätter löschen möchtest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige