web-dev-qa-db-de.com

Arbeitsblatt in Excel mit VBA löschen

Ich habe ein Makro, das eine Reihe von Arbeitsmappen generiert. Ich möchte, dass die Makros zu Beginn des Laufs prüfen, ob die Datei 2 Tabellen enthält, und sie löschen, falls vorhanden.

Der Code, den ich ausprobiert habe, war:

If Sheet.Name = "ID Sheet" Then
    Application.DisplayAlerts = False
    Sheet.Delete
    Application.DisplayAlerts = True

End If

If Sheet.Name = "Summary" Then
    Application.DisplayAlerts = False
    Sheet.Delete
    Application.DisplayAlerts = True
End If

Dieser Code gibt einen Fehler zurück:

laufzeitfehler # 424, Objekt erforderlich.

Ich habe wahrscheinlich die falsche Formatierung, aber wenn es einen einfacheren Weg gibt, wäre es sehr nützlich.

16
Clauric

Erwägen:

Sub SheetKiller()
    Dim s As Worksheet, t As String
    Dim i As Long, K As Long
    K = Sheets.Count

    For i = K To 1 Step -1
        t = Sheets(i).Name
        If t = "ID Sheet" Or t = "Summary" Then
            Application.DisplayAlerts = False
                Sheets(i).Delete
            Application.DisplayAlerts = True
        End If
    Next i
End Sub

HINWEIS:

Da wir Löschen sind, führen wir die Schleife rückwärts aus.

34
Gary's Student

Versuchen Sie diesen Code:

For Each aSheet In Worksheets

    Select Case aSheet.Name

        Case "ID Sheet", "Summary"
            Application.DisplayAlerts = False
            aSheet.Delete
            Application.DisplayAlerts = True

    End Select

Next aSheet
9
R.Katnaan

Du könntest benutzen On Error Resume Next dann müssen nicht alle Blätter in der Arbeitsmappe durchlaufen werden.

Mit On Error Resume Next Die Fehler werden nicht weitergegeben, sondern unterdrückt. Wenn also die Blätter nicht vorhanden sind oder aus irgendeinem Grund nicht gelöscht werden können, geschieht nichts. Es ist so, als würden Sie sagen: Löschen Sie diese Blätter, und wenn dies fehlschlägt, ist es mir egal. Excel soll das Blatt finden, Sie werden keine Suche durchführen.

Hinweis: Wenn die Arbeitsmappe nur diese beiden Blätter enthält, wird nur das erste Blatt gelöscht.

Dim book
Dim sht as Worksheet

set book= Workbooks("SomeBook.xlsx")

On Error Resume Next

Application.DisplayAlerts=False 

Set sht = book.Worksheets("ID Sheet")
sht.Delete

Set sht = book.Worksheets("Summary")
sht.Delete

Application.DisplayAlerts=True 

On Error GoTo 0
5
dee
Worksheets("Sheet1").Delete
Worksheets("Sheet2").Delete
1
user7495253