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

Forumthread: Sheet löschen falls vorhanden & weiter

Sheet löschen falls vorhanden & weiter
14.07.2022 08:39:27
Basti
Hallo Zusammen,
ich möchte ein Code-Schnipsel modifizieren:
Falls Tabellenblatt "DATEN" vorhanden --> 1. löschen und 2. Makro weiter laufen lassen
Falls Tabellenblatt "DATEN" nicht vorhanden --> 2. Makro weiter laufen lassen
Sheets("DATEN").Select
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
Danke im Voraus für Vorschläge/Tipps
Viele Grüße
Basti
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sheet löschen falls vorhanden & weiter
14.07.2022 08:45:19
Oberschlumpf
Hi Basti,
versuch mal (ungetestet)

Sub sbSheetDel()
Dim lshAll As Worksheet
For Each lshAll in Sheets
If lshAll.Name = "DATEN" Then
Application.DisplayAlerts = False
lshAll.Delete
Application.DisplayAlerts = True
Exit For
End If
Next
'ab hier Makro2
Hilfts?
Ciao
Thorsten
Anzeige
AW: Sheet löschen falls vorhanden & weiter
14.07.2022 09:14:01
Basti
Hallo Thorsten,
funktioniert
Vielen Dank für die Rückmeldung.
Viele Grüße
Basti
AW: Sheet löschen falls vorhanden & weiter
14.07.2022 08:58:57
UweD
Hallo
versuch es mal so

    If Not IsError(Evaluate("Daten!A1")) Then
Application.DisplayAlerts = False
Sheets("Daten").Delete
Application.DisplayAlerts = True
End If
'Dein Makro
LG UweD
Anzeige
AW: Sheet löschen falls vorhanden & weiter
14.07.2022 09:06:02
Daniel
Hi
in dem Fall ist der einfachste Weg, das Makro anzuweisen bei dem Fehler, der entsteht wenn du versuchst, ein nicht vorhandenes Tabellenblatt zu löschen, einfach weiter zu machen. Denn es ist egal, ob das Blatt nicht da ist, weil es sowieso fehlt, oder ob es nicht da ist, weil du es gelöscht hast. Das Resultat ist das gleiche, daher

Application.DisplayAlerts = false
On Error Resume Next
Sheets("Daten").Delete
On Error Goto 0
Application.DisplayAlerts = true
wer das mit dem Ausschalten der Fehlerbehandlung als unsauber betrachtet oder die Fehlerbehandlung bereits anderweitig verwendet, der kann das dann auch so fehlerfrei machen:

dim sh as Worksheet
for each sh in Thisworkbook.Worksheets
if sh.Name = "Daten" then
Application.DisplayAlerts = false
sh.Delete
Application.DisplayAlerts = true
exit for
Next
Gruß Daniel
Anzeige
AW: Falls nur Tabellenblatt "DATEN" vorhanden?
14.07.2022 09:12:01
GerdL
.
ohne Schleife
14.07.2022 09:32:53
UweD
Hier ein Vorschlag für den Einwand von Gerd

    Dim TB As String
TB = "Daten"
If Not IsError(Evaluate(TB & "!A1")) Then
If Sheets.Count > 1 Then
Application.DisplayAlerts = False
Sheets(TB).Delete
Application.DisplayAlerts = True
Else
MsgBox "Es muss mind ein Blatt vorhanden sein"
End If
End If
'Dein Makro
LG UweD
Anzeige
dann erzeugt mein Code einen Fehler^^
14.07.2022 10:38:44
Oberschlumpf
AW: Sheet löschen falls vorhanden & weiter
14.07.2022 11:06:10
snb

Sub M_snb()
Application.displayalerts=false
On error resume next
Sheets("Daten").delete
End Sub

AW: Sheet löschen falls vorhanden & weiter
14.07.2022 11:08:11
Oberschlumpf
und nach deinem Code werden die displayalerts nieee wieder erscheinen.....ok, excelneustart...oder für die ganz ahnungslosen computerneustart :-))
Anzeige
AW: Sheet löschen falls vorhanden & weiter
14.07.2022 11:21:20
Daniel
Kleines Zitat aus der Hilfe:
Wenn Sie diese Eigenschaft auf False festlegen, legt Excel diese Eigenschaft auf True fest, wenn der Code abgeschlossen ist
https://docs.microsoft.com/de-de/office/vba/api/excel.application.displayalerts
Es gibt Eigenschaften, die sich automatisch bei Ende der Makroverarbeitung wieder auf den Standardwert zurückstellen und daher nicht zwingend im Code wieder zurückgesetzt werden müssen.
Dazu zählen ScreenUpdating und DisplayAlerts.
Einstellungen, die nach Makroende so wie eingestellt erhalten bleiben, sind Calculation und EnableEvents.
Das Erkennungsmerkmal zwischen "wird automatisch zurückgesetzt" und "bleibt so wie zuletzt eingestellt" könnte sein, dass alle Einstellungen, die ohne VBA nicht beeinflussbar sind, immer zurückgesetzt werden, und Einstellungen, die der Anwender auch über das Menü ändern kann, so bleiben.
(wobei das EnableEvents hier etwas zwiespältig ist, des gibt keine Menüfunktion, die es ändern kann, aber mit dem Button "Entwurfsmodus" eine Einstellung, die gleiches bewirkt)
Gruß Daniel
Anzeige
AW: Sheet löschen falls vorhanden & weiter
14.07.2022 11:23:28
Oberschlumpf
ich wollt ja nur wissen, ob ich recht hab^^ :-) ok, ok, ich nehm meinen Einwand von 11:08:11 zurück :-))
AW: Sheet löschen falls vorhanden & weiter
14.07.2022 11:36:35
GerdL
Ich hatte eigentlich keinen Einwand, sondern eine Nachfrage an Bastian, ob bei ihm die Konstellation mit nur einem Blatt vorkommt.
Der Code von Snb ist für die Fortsetzung der innerhalb der Prozedur so nicht verwendbar. Hier noch eine Schleifenlösung.

Sub Unit()
Dim i As Integer
For i = Sheets.Count To 2 Step -1
If Sheets(i).Name = "DATEN" Then
Application.DisplayAlerts = False
Sheets("DATEN").Delete
Application.DisplayAlerts = True
Exit For
End If
Next
'weiterer Code
End Sub
Gruß Gerd
Anzeige
AW: Sheet löschen falls vorhanden & weiter
14.07.2022 12:35:56
Daniel
Hi
Wenn das Blatt "Daten" nicht das einzige Blatt ist, sollte es gelöscht werden.
Dieser Code lässt es aber stehen, wenn es den Index 1 hat auch wenn es weitere Blätter gibt und es daher gelöscht werden könnte.
Gruß Daniel
;

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

Sheet löschen falls vorhanden & weiter


Schritt-für-Schritt-Anleitung

Um ein Excel-Sheet zu löschen, falls es vorhanden ist, kannst Du den folgenden VBA-Code verwenden. Dieser Code prüft, ob das Tabellenblatt "DATEN" existiert und löscht es, bevor das Makro fortgesetzt wird.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject" > "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:
Sub sbSheetDel()
    Dim lshAll As Worksheet
    For Each lshAll In Sheets
        If lshAll.Name = "DATEN" Then
            Application.DisplayAlerts = False
            lshAll.Delete
            Application.DisplayAlerts = True
            Exit For
        End If
    Next
    ' Hier kommt dein weiterer Makro-Code
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus, um das Blatt zu löschen.

Häufige Fehler und Lösungen

Ein häufiger Fehler beim Löschen eines Blattes ist, dass Excel eine Warnmeldung anzeigt, wenn das Blatt nicht vorhanden ist. Um dies zu umgehen, kannst Du die Fehlerbehandlung verwenden:

Sub M_snb()
    Application.DisplayAlerts = False
    On Error Resume Next
    Sheets("Daten").Delete
    On Error GoTo 0
    Application.DisplayAlerts = True
End Sub

Diese Methode sorgt dafür, dass das Makro weiterhin funktioniert, auch wenn das Blatt "Daten" nicht vorhanden ist.


Alternative Methoden

Es gibt verschiedene Möglichkeiten, ein Blatt zu löschen. Eine davon ist die Verwendung von Evaluate, um zu prüfen, ob das Blatt existiert:

If Not IsError(Evaluate("Daten!A1")) Then
    Application.DisplayAlerts = False
    Sheets("Daten").Delete
    Application.DisplayAlerts = True
End If

Diese Methode ist besonders nützlich, wenn Du sicherstellen möchtest, dass Dein Makro nur dann versucht, das Blatt zu löschen, wenn es tatsächlich existiert.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du das Löschen von Blättern in verschiedenen Szenarien umsetzen kannst:

  1. Ein Blatt löschen, wenn mehr als eines vorhanden ist:
Dim TB As String
TB = "Daten"
If Not IsError(Evaluate(TB & "!A1")) Then
    If Sheets.Count > 1 Then
        Application.DisplayAlerts = False
        Sheets(TB).Delete
        Application.DisplayAlerts = True
    Else
        MsgBox "Es muss mindestens ein Blatt vorhanden sein"
    End If
End If
  1. Löschen eines Blatts ohne Schleife:
Sub Unit()
    Dim i As Integer
    For i = Sheets.Count To 2 Step -1
        If Sheets(i).Name = "DATEN" Then
            Application.DisplayAlerts = False
            Sheets("DATEN").Delete
            Application.DisplayAlerts = True
            Exit For
        End If
    Next
    ' Weiterer Code
End Sub

Tipps für Profis

  • Setze Application.DisplayAlerts auf False, um Warnmeldungen zu unterdrücken, aber denke daran, es wieder auf True zu setzen, wenn Du mit wichtigen Operationen fortfährst.
  • Nutze On Error Resume Next, um sicherzustellen, dass Dein Makro nicht stoppt, falls ein Blatt nicht vorhanden ist.
  • Teste Deinen Code gründlich, um sicherzustellen, dass er unter verschiedenen Bedingungen funktioniert.

FAQ: Häufige Fragen

1. Was passiert, wenn ich versuche, ein Blatt zu löschen, das nicht vorhanden ist? Wenn Du versuchst, ein nicht vorhandenes Blatt zu löschen, wird normalerweise eine Fehlermeldung angezeigt. Mit der richtigen Fehlerbehandlung kannst Du dies jedoch vermeiden.

2. Wie kann ich sicherstellen, dass mein Makro nicht abstürzt? Verwende On Error Resume Next, um das Makro bei Fehlern fortzusetzen, und setze Application.DisplayAlerts auf False, um Warnmeldungen zu unterdrücken.

3. Ist dieser Code in allen Excel-Versionen anwendbar? Ja, der Code ist in den meisten Versionen von Excel anwendbar, die VBA unterstützen. Stelle sicher, dass Du Zugriff auf den VBA-Editor hast.

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