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

Forumthread: Prüfen ob Tabellenblatt vorhanden

Prüfen ob Tabellenblatt vorhanden
21.06.2015 11:17:54
Friedhelm
Hallo zusammen,
ich möchte gerne in meinem Projekt ein Tabellenblatt "T1" einfügen und wieder löschen.
Um Fehlermeldungen zu vermeiden möchte ich vorher prüfen ob das Tb "T1" vorhanden ist.
Ich hab es versucht mit:
With ActiveWorkbook
If .Sheets("T1") Then
.Sheets.Add
End If
End With
das führt aber zur Fehlermeldung.
Wie schreibe ich es richtig zum Einfügen mit Prüfung ob vorhanden und zur Löschung mit Prüfung ob vorhanden.

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen ob Tabellenblatt vorhanden
21.06.2015 11:25:23
Beverly
Hi,
du kannst entweder in einer Schleife über alle Tabellenblätter laufen und sie auf ihren Namen prüfen, oder auf diesem Weg:
    If IsError(Evaluate("T1!A1")) Then
Worksheets.Add
Worksheets(Worksheets.Count).Name = "T1"
Else
MsgBox "T1 schon vorhanden"
End If

Bedingung ist allerdings, dass in der auszuwertenden Zelle A1 keine Formel steht, die einen Fehlerwert ausgibt.


Anzeige
AW: Prüfen ob Tabellenblatt vorhanden
21.06.2015 11:49:07
Friedhelm
Hallo Karin,
vielen Dank, ich glaube mit dem Bsp kann ich was anfangen, da die Zelle A1 keine Formel hat.
Die gleiche Prüfung mit dem Löschen dieser Seite, nicht nur der Zelle A1, brauche ich noch. Vielleicht kannst du mir dieses auch noch als Bsp zeigen. ich teste es dann heute nachmittag.
Vielen Dank
Friedhelm

Anzeige
AW: Prüfen ob Tabellenblatt vorhanden
21.06.2015 12:03:36
Beverly
Hi Friedhelm,
das geht dann genau anders herum:
    If Not IsError(Evaluate("T1!A1")) Then
Application.DisplayAlerts = False
Worksheets("T1").Delete
Application.DisplayAlerts = True
Else
MsgBox "T1 nicht mehr vorhanden"
End If


Anzeige
AW: Prüfen ob Tabellenblatt vorhanden
21.06.2015 17:52:25
Friedhelm
Hallo Karin,
vielen Dank, ich habe es erfolgreich getestet.
Danke auch an Sepp und AlexG für eure Mühe
Schönen Gruß
Friedhelm

AW: Prüfen ob Tabellenblatt vorhanden
21.06.2015 12:02:31
Sepp
Hallo Friedhelm,
das geht z. B. so.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub einfuegen()
  
  If Not SheetExist("T1") Then
    Sheets.Add(after:=Sheets(Sheets.Count)).Name = "T1"
  End If
  
End Sub


Sub loeschen()
  
  If SheetExist("T1") Then
    Application.DisplayAlerts = False
    Sheets("T1").Delete
    Application.DisplayAlerts = True
  End If
  
End Sub


Private Function SheetExist(ByVal sheetName As String, Optional Wb As Workbook) As Boolean
  Dim wks As Worksheet
  On Error GoTo ERRORHANDLER
  If Wb Is Nothing Then Set Wb = ThisWorkbook
  For Each wks In Wb.Worksheets
    If LCase(wks.Name) = LCase(sheetName) Then SheetExist = True: Exit Function
  Next
  ERRORHANDLER:
  SheetExist = False
End Function


Gruß Sepp

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Tabellenblatt in Excel prüfen und verwalten


Schritt-für-Schritt-Anleitung

Um in Excel VBA zu prüfen, ob ein Tabellenblatt vorhanden ist, kannst Du die folgende Vorgehensweise nutzen. Hier ist ein einfaches Beispiel, das zeigt, wie Du das Blatt "T1" hinzufügen oder löschen kannst, je nachdem, ob es bereits existiert:

  1. Öffne den Visual Basic-Editor (ALT + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject", dann "Einfügen" > "Modul").
  3. Kopiere und füge den folgenden Code ein:
Sub TabellenblattVerwalten()
    Dim sheetName As String
    sheetName = "T1"

    ' Prüfen, ob das Tabellenblatt existiert
    If Not SheetExist(sheetName) Then
        Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = sheetName
    Else
        MsgBox sheetName & " ist bereits vorhanden."
    End If
End Sub

Private Function SheetExist(sheetName As String) As Boolean
    Dim wks As Worksheet
    On Error Resume Next
    Set wks = ThisWorkbook.Worksheets(sheetName)
    SheetExist = Not wks Is Nothing
    On Error GoTo 0
End Function
  1. Um das Tabellenblatt zu löschen, kannst Du folgenden Code verwenden:
Sub BlattLoeschen()
    Dim sheetName As String
    sheetName = "T1"

    If SheetExist(sheetName) Then
        Application.DisplayAlerts = False
        Worksheets(sheetName).Delete
        Application.DisplayAlerts = True
    Else
        MsgBox sheetName & " ist nicht vorhanden."
    End If
End Sub

Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs".

    • Lösung: Stelle sicher, dass der Name des Tabellenblatts korrekt geschrieben ist und überprüfe, ob Du tatsächlich ein Blatt mit diesem Namen hast.
  • Fehler: "Übertragungsfehler: Das Blatt kann nicht hinzugefügt werden".

    • Lösung: Dies kann auftreten, wenn Du versuchst, mehr als 255 Blätter zu erstellen oder wenn Du in einer geschützten Arbeitsmappe arbeitest.

Alternative Methoden

Eine weitere Möglichkeit, um zu prüfen, ob ein Tabellenblatt vorhanden ist, ist die Verwendung der Evaluate-Methode. Hier ist ein Beispiel:

If IsError(Evaluate("T1!A1")) Then
    Worksheets.Add.Name = "T1"
Else
    MsgBox "T1 schon vorhanden"
End If

Diese Methode funktioniert jedoch nur, wenn die Zelle A1 des Blatts keine Fehlerformel enthält.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du die genannten Methoden in Deinem Projekt umsetzen kannst:

  1. Tabellenblatt hinzufügen:

    If Not SheetExist("T1") Then
       Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "T1"
    End If
  2. Tabellenblatt löschen:

    If SheetExist("T1") Then
       Application.DisplayAlerts = False
       Worksheets("T1").Delete
       Application.DisplayAlerts = True
    End If

Diese Beispiele zeigen, wie Du mit VBA prüfen kannst, ob ein Tabellenblatt vorhanden ist und es entsprechend hinzufügen oder löschen kannst.


Tipps für Profis

  • Verwende die On Error Resume Next-Anweisung, um Fehler zu umgehen, wenn Du prüfst, ob das Tabellenblatt existiert. Dies kann Deine Codes robuster machen.
  • Vergiss nicht, die Application.DisplayAlerts-Eigenschaft zu setzen, um unerwünschte Warnmeldungen zu vermeiden, wenn Du ein Blatt löschst.
  • Halte Deine Codes modular, indem Du Funktionen erstellst, die wiederverwendet werden können, wie z.B. SheetExist.

FAQ: Häufige Fragen

1. Wie kann ich prüfen, ob ein Wert in einem anderen Tabellenblatt vorhanden ist?
Du kannst die Evaluate-Methode oder die VLookup-Funktion verwenden, um zu prüfen, ob ein Wert existiert.

2. Was passiert, wenn ich versuche, ein bereits vorhandenes Blatt zu erstellen?
VBA wird eine Fehlermeldung ausgeben, wenn Du versuchst, ein Blatt mit einem existierenden Namen zu erstellen. Verwende eine Prüfung, um dies zu vermeiden.

3. Kann ich das Löschen eines Blattes rückgängig machen?
Nein, einmal gelöscht, kann ein Blatt nicht wiederhergestellt werden, es sei denn, Du schließt die Arbeitsmappe ohne zu speichern.

4. Wie viele Tabellenblätter kann ich in einer Excel-Arbeitsmappe haben?
Die maximale Anzahl von Arbeitsblättern in Excel ist 255, abhängig von der verfügbaren Speicherkapazität.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige