Wie lösche ich ein blatt mit vba?

Um ein Blatt mit VBA zu löschen, müssen Sie die VBA-Methode „Löschen“ verwenden. Sie müssen das Blatt angeben, das Sie löschen möchten, und dann diese Methode verwenden. Nehmen wir an, wenn Sie „Blatt1“ löschen möchten, müssen Sie Blatt1 erwähnen, dann einen Punkt (.) eingeben und am Ende „Löschen“ eingeben.

In diesem Tutorial sehen wir verschiedene Möglichkeiten, wie Sie ein Blatt mithilfe von VBA-Code löschen können. Stellen Sie sicher, dass Sie über die Registerkarte „Entwickler“ im Menüband verfügen. Von hier aus können Sie auf den visuellen Basiseditor zugreifen .

Löschen Sie ein Blatt anhand seines Namens

Jedes Blatt hat einen Namen und Sie können den Schreibcode verwenden, um ein Blatt unter Verwendung des Namens zu löschen. Nehmen wir also an, Sie möchten das Arbeitsblatt „Daten“ löschen. Der Code wäre:

 Sub vba_delete_sheet() Sheets("Data").Delete End Sub
Code schreiben-löschen

Ein Blatt ohne Vorwarnung löschen (Eingabeaufforderung)

Wenn Sie ein Arbeitsblatt löschen, zeigt Excel eine Meldung an, um zu bestätigen, ob Sie es löschen oder abbrechen möchten. Und wenn Sie VBA-Code verwenden, erledigt Excel dies in diesem Fall auch.

Dialogfeld zum Bestätigen des Löschens oder Stornierens

Um dieses Problem zu beheben, können Sie die Bildschirmaktualisierung deaktivieren, um ein Blatt zu löschen, und es dann aktivieren.

 Application.DisplayAlerts = False Sheets("Data").Delete Application.DisplayAlerts = True
Dialogwarnung deaktivieren

Name des Blatts einer Zelle

Nehmen wir nun an, Sie möchten einen Zellenwert verwenden, um den Arbeitsblattnamen zu verwenden. In diesem Fall müssen Sie dazu das VBA-Range-Objekt verwenden.

Verwenden Sie einen Zellwert, um den Arbeitsblattnamen zu verwenden

Blatt anhand der Blattnummer löschen

Das ist richtig. Zum Löschen können Sie die Blattnummer verwenden. Hier ist der Code.

 Sub vba_delete_sheet() Sheets(1).Delete End Sub
Verwenden Sie die Blattnummer, um sie zu löschen

Aktives Blatt löschen

Um das aktive Blatt zu löschen, können Sie das Objekt „ActiveSheet“ verwenden, anstatt den Blattnamen zur Angabe des Blattes zu verwenden.

 ActiveSheet.Delete
Aktives-Blatt löschen-aktives-Blatt verwenden

Wie gesagt, dadurch wird das aktive Blatt gelöscht und Sie können es aktivieren, bevor Sie es löschen. Aber das ist natürlich nicht nötig, denn Sie können auf ein Blatt verweisen und es löschen, wie wir am Anfang dieses Tutorials gesehen haben.

Überprüfen Sie, ob das Blatt vorhanden ist, bevor Sie es löschen

Sie können Code auch so schreiben, dass er prüft, ob das Blatt vorhanden ist oder nicht, und es dann löscht.

 Sub check_sheet_delete() Dim ws As Worksheet Dim mySheet As Variant mySheet = InputBox("enter sheet name") Application.DisplayAlerts = False For Each ws In ThisWorkbook.Worksheets If mySheet = ws.Name Then ws.Delete End If Next ws Application.DisplayAlerts = True End Sub
Schreiben Sie Code, um zu prüfen, ob das Blatt vorhanden ist

In diesem Code haben Sie FOR EACH , um alle Arbeitsblätter zu durchlaufen. Und dann eine WENN-ANWEISUNG, um das Blatt zu löschen, wenn sein Name mit dem Namen übereinstimmt, den Sie in das Eingabefeld eingegeben haben.

Alle Arbeitsblätter aus der Arbeitsmappe löschen

Ich bin mir sicher, dass Sie diese Frage im Kopf haben, aber ich fürchte, es ist unmöglich, alle Arbeitsblätter in der Arbeitsmappe zu löschen. Sie haben noch mindestens ein Arbeitsblatt übrig.

Aber ich habe eine Lösung für dieses Problem gefunden. Sie können ein neues leeres Blatt einfügen und dann alle bereits vorhandenen löschen.

Hier ist der Code: Dieser Code fügt ein neues Blatt hinzu und löscht alle anderen Blätter.

 Sub vba_delete_all_worksheets() Dim ws As Worksheet Dim mySheet As String mySheet = "BlankSheet-" & Format(Now, "SS") Sheets.Add.Name = mySheet Application.DisplayAlerts = False For Each ws In ThisWorkbook.Worksheets If ws.Name <> mySheet Then ws.Delete End If Next ws Application.DisplayAlerts = True End Sub

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert