Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Blatt löschen, WENN VORHANDEN

Blatt löschen, WENN VORHANDEN
24.11.2008 15:31:09
Macro
Hi,
ich will ein Blatt aus meinem Sheet löschen:
Application.DisplayAlerts = False
Worksheets("Temp").Delete
Application.DisplayAlerts = True
Dieser Code soll aber nur ausgeführt werden, wenn das Blatt auch da ist, sonst kommt eine Fehlermeldung. Wie Prüfe ich vorher ab, ob das Tabellenblatt"TEMP" auch tatsächlich existiert ?
Danke mal und Gruss
Marko
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blatt löschen, WENN VORHANDEN
24.11.2008 15:36:40
Rudi
Hallo,
in dem Fall würde ich den Fehler ignorieren
Application.DisplayAlerts = False
on error resume Next
Worksheets("Temp").Delete
On Error Goto 0
Application.DisplayAlerts = True
Gruß
Rudi
AW: Blatt löschen, WENN VORHANDEN
24.11.2008 15:37:10
hary
Hallo Marco

On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Temp").Delete
Application.DisplayAlerts = True


Gruss Hary

Anzeige
AW: Blatt löschen, WENN VORHANDEN
24.11.2008 16:02:00
Matthias
Hallo
hier eine weitere Variante: (solltest Du kein On Error Resume Next benutzen wollen)
Code in ein Modul
Option Explicit

Sub Blatt_Loeschen()
Dim x As Long
For x = 1 To Worksheets.Count
If Worksheets(x).Name = "Temp" Then
Application.DisplayAlerts = False
Worksheets(x).Delete
Application.DisplayAlerts = True
Exit For
End If
Next
End Sub


Auch bei Hunderten von Tabellenblättern, geht das relativ flott.
Gruß Matthias

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Blatt löschen, wenn vorhanden


Schritt-für-Schritt-Anleitung

Um ein Blatt in Excel zu löschen, aber nur, wenn es tatsächlich vorhanden ist, kannst du den folgenden VBA-Code verwenden. Dieser Code prüft, ob das Tabellenblatt "Temp" existiert, und löscht es, ohne dass eine Fehlermeldung erscheint:

Sub Blatt_Loeschen()
    Dim ws As Worksheet
    On Error Resume Next
    Set ws = Worksheets("Temp")
    On Error GoTo 0
    If Not ws Is Nothing Then
        Application.DisplayAlerts = False
        ws.Delete
        Application.DisplayAlerts = True
    End If
End Sub

Dieser Code stellt sicher, dass die Anwendung keine Warnmeldungen anzeigt, wenn das Blatt gelöscht wird. Beachte, dass Application.DisplayAlerts auf False gesetzt wird, um das Löschen ohne Nachfrage zu ermöglichen.


Häufige Fehler und Lösungen

  1. Fehler: „Laufzeitfehler 9: Index außerhalb des gültigen Bereichs“

    • Lösung: Dieser Fehler tritt auf, wenn du versuchst, ein Blatt zu löschen, das nicht existiert. Stelle sicher, dass dein Code die Existenz des Blattes prüft, bevor du es löschst.
  2. Fehler: Warnmeldungen erscheinen trotz DisplayAlerts = False

    • Lösung: Überprüfe, ob Application.DisplayAlerts wirklich auf False gesetzt ist, bevor du das Blatt löschst.

Alternative Methoden

Falls du On Error Resume Next nicht verwenden möchtest, kannst du auch eine Schleife nutzen, um durch alle Arbeitsblätter zu gehen und das Blatt zu löschen, wenn es gefunden wird:

Sub Blatt_Loeschen_Alternativ()
    Dim x As Long
    For x = 1 To Worksheets.Count
        If Worksheets(x).Name = "Temp" Then
            Application.DisplayAlerts = False
            Worksheets(x).Delete
            Application.DisplayAlerts = True
            Exit For
        End If
    Next x
End Sub

Diese Methode ist besonders nützlich, wenn du mehrere Blätter in Excel löschen möchtest.


Praktische Beispiele

  • Beispiel 1: Löschen eines Blattes namens "Daten":

    Sub Blatt_Daten_Loeschen()
      On Error Resume Next
      Application.DisplayAlerts = False
      Worksheets("Daten").Delete
      Application.DisplayAlerts = True
    End Sub
  • Beispiel 2: Löschen mehrerer Blätter:

    Sub Mehrere_Blaetter_Loeschen()
      Dim BlattNamen As Variant
      BlattNamen = Array("Temp", "Daten", "Bericht")
      Dim i As Integer
      For i = LBound(BlattNamen) To UBound(BlattNamen)
          On Error Resume Next
          Application.DisplayAlerts = False
          Worksheets(BlattNamen(i)).Delete
          Application.DisplayAlerts = True
      Next i
    End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False, um das Flackern des Bildschirms zu minimieren, während du Blätter löschst.
  • Für komplexere Anwendungsfälle kannst du auch eine Protokollierung hinzufügen, um festzuhalten, welche Blätter gelöscht wurden.
  • Denke daran, eine Sicherheitskopie deiner Arbeitsmappe zu erstellen, bevor du Blätter löschst, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass ein Blatt nur gelöscht wird, wenn es existiert?
Verwende die Methode mit On Error Resume Next, um Fehler zu ignorieren, oder prüfe die Existenz des Blattes mit einer Schleife.

2. Kann ich mehrere Blätter auf einmal löschen?
Ja, du kannst eine Schleife verwenden, um durch eine Liste von Blattnamen zu iterieren und jedes Blatt zu löschen, das gefunden wird.

3. Funktioniert dieser Code in allen Excel-Versionen?
Ja, dieser VBA-Code funktioniert in allen gängigen Versionen von Excel.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige