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

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

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
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
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige