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

Forumthread: Prüfung ob Tabellenblatt vorhanden

Prüfung ob Tabellenblatt vorhanden
25.02.2017 16:40:47
Werner
Hallo Forum,
ich suche nach einer einfachen Lösung, mit der ich feststellen kann, ob ein Tabellenblatt mit einem bestimmten Namen bereits vorhanden ist. Dazu möchte ich ungern das gesuchte Tabellenblatt aktivieren, und die Aktion über "on error resume next" abfangen. Genauso ungern möchte ich mich durch alle Tabellenblätter "durchwühlen" und prüfen, ob das von mir gesuchte Blatt dabei ist.
Hat jemand eine Idee?
Mein Ziel; ich möchte ein bestimmtes Tabellenblatt unter einem neuen "sprechendem" Namen kopieren und danach einige Felder auf Grundstellung stellen.
Danke im Voraus
Werner
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfung ob Tabellenblatt vorhanden
25.02.2017 17:01:59
onur
Hi,
Das in ein Modul :

Function WorksheetExists(wsName As String) As Boolean
Dim ws As Worksheet
Dim ret As Boolean
ret = False
wsName = UCase(wsName)
For Each ws In ThisWorkbook.Sheets
If UCase(ws.Name) = wsName Then
ret = True
Exit For
End If
Next
WorksheetExists = ret
End Function
Anwendung :
IF WorksheetExists("Tabelle1") THEN

Anzeige
AW: Prüfung ob Tabellenblatt vorhanden
25.02.2017 17:30:31
Werner
Hallo onur,
vielen Dank für Deine Antwort. Leider benutzt Deine Lösung einen Weg, welchen ich ungern nutzen wollte.
Gruß
Werner
AW: Prüfung ob Tabellenblatt vorhanden
25.02.2017 17:32:45
onur
Wenn du netterweise auch noch sagen würdest, welchen weg du nicht gerne benutzt.
Bei vba gibt es hunderte wege, um zum ziel zu kommen....
AW: Prüfung ob Tabellenblatt vorhanden
25.02.2017 17:58:37
Werner
Hallo onur,
was ich "ungern" machen würde, habe ich in meiner Fragestellung bereits beantwortet.
Gruß
Werner
Anzeige
AW: Prüfung ob Tabellenblatt vorhanden
25.02.2017 19:25:04
Luschi
Hallo Werner,
was Du willst, und was in Vba machbar ist, sind eben 2 Paar Schuhe, die nicht immer zueinander passen.
Die Lösung von 'onur' ist bis auf einen kleinen Lapsus die sauberste Lösung.
Du könntest aber auch hardcore-mäßig abfragen:

Sub test1()
Dim ws As Worksheet
On Error Resume Next
Set ws = ThisWorkbook.Worksheets("Karneval ole")
On Error GoTo 0
If ws Is Nothing Then
MsgBox "Tabelle nicht vorhanden!", vbSystemModal + 16
Exit Sub
End If
'hier gehts weiter, falls die Tabelle existiert!
'blablabla
Set ws = Nothing
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Prüfung ob Tabellenblatt vorhanden
26.02.2017 08:53:49
Werner
Hallo Luschi,
danke für Deinen Vorschlag, den ich inzwischen realisiert habe.
Gruß
Werner
AW: Prüfung ob Tabellenblatt vorhanden
26.02.2017 09:52:20
hary
Moin
Einen hab auch noch
If IsError(Evaluate("Tabelle2!A1")) Then
MsgBox "Blatt nicht vorhanden"
Else
MsgBox "Blatt vorhanden"
End If

gruss hary
Anzeige
AW: Prüfung ob Tabellenblatt vorhanden
25.02.2017 17:42:59
Luschi
Hallo onur,
leider hat Dein Code folgenden Fehler:
- For Each ws In ThisWorkbook.Sheets
die Variable 'ws' ist als Worksheet definiert - klapperst aber in der For-Schleife alle Sheets-Objekte ab (Diagramme, Excel 4.0 Makro-Vorlagen, u.u.u)
da knallt's eben, wenn es in der Arbeitsmappe auch andere Objekte git als nur 'Worksheet'.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Prüfung ob Tabellenblatt vorhanden
25.02.2017 17:51:13
onur
Hi Luschi,
Hast natürlich recht, müsste besser
For Each ws In ThisWorkbook.Worksheets

heissen.
Gruß
Onur
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Prüfung, ob Tabellenblatt vorhanden ist


Schritt-für-Schritt-Anleitung

Um zu prüfen, ob ein Tabellenblatt in Excel vorhanden ist, kannst Du folgende VBA-Funktion verwenden. Diese Methode ermöglicht es Dir, ohne das Blatt aktivieren zu müssen, einfach zu checken, ob es existiert.

  1. Öffne den VBA-Editor (Alt + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).
  3. Kopiere den folgenden Code in das Modul:
Function WorksheetExists(wsName As String) As Boolean
    Dim ws As Worksheet
    Dim ret As Boolean
    ret = False
    wsName = UCase(wsName)
    For Each ws In ThisWorkbook.Worksheets
        If UCase(ws.Name) = wsName Then
            ret = True
            Exit For
        End If
    Next
    WorksheetExists = ret
End Function
  1. Um die Funktion zu verwenden, kannst Du sie wie folgt aufrufen:
If WorksheetExists("Tabelle1") Then
    MsgBox "Das Tabellenblatt existiert!"
Else
    MsgBox "Das Tabellenblatt existiert nicht."
End If

Häufige Fehler und Lösungen

  • Fehler: "Der Name ist bereits vorhanden": Dies kann passieren, wenn Du versuchst, ein neues Blatt mit einem Namen zu erstellen, der bereits existiert. Überprüfe mit der Funktion WorksheetExists, bevor Du ein neues Blatt erstellst.

  • Fehler bei der Schleife: Wenn Du For Each ws In ThisWorkbook.Sheets anstelle von For Each ws In ThisWorkbook.Worksheets verwendest, kann dies zu Fehlern führen, da auch andere Objekte (z.B. Diagramme) durchlaufen werden.


Alternative Methoden

Eine weitere Methode, um zu prüfen, ob ein Tabellenblatt vorhanden ist, ist die Verwendung von On Error Resume Next:

Sub CheckSheet()
    Dim ws As Worksheet
    On Error Resume Next
    Set ws = ThisWorkbook.Worksheets("Tabelle1")
    On Error GoTo 0
    If ws Is Nothing Then
        MsgBox "Das Blatt existiert nicht."
    Else
        MsgBox "Das Blatt existiert."
    End If
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du die Funktion WorksheetExists verwenden kannst:

  • Tabellenblatt erstellen, wenn nicht vorhanden:
Sub CreateSheetIfNotExists()
    Dim sheetName As String
    sheetName = "NeuesTabellenblatt"

    If Not WorksheetExists(sheetName) Then
        ThisWorkbook.Worksheets.Add.Name = sheetName
    Else
        MsgBox "Das Tabellenblatt '" & sheetName & "' existiert bereits."
    End If
End Sub
  • Wert in einem anderen Tabellenblatt prüfen:
Sub CheckValueInOtherSheet()
    Dim valueToCheck As Variant
    valueToCheck = "Suchwert"

    If Not WorksheetExists("Tabelle2") Then
        MsgBox "Tabelle2 existiert nicht."
    Else
        If ThisWorkbook.Worksheets("Tabelle2").Range("A1").Value = valueToCheck Then
            MsgBox "Wert gefunden!"
        Else
            MsgBox "Wert nicht gefunden."
        End If
    End If
End Sub

Tipps für Profis

  • Nutze die Funktion WorksheetExists in Kombination mit anderen VBA-Techniken wie If WorksheetExists("Tabellenblatt") Then..., um den Code klarer und effizienter zu gestalten.
  • Denke daran, dass die Groß- und Kleinschreibung bei der Namensprüfung keine Rolle spielt. Mit UCase wird der Vergleich unabhängig von der Großschreibung durchgeführt.
  • Verwende die Methode zur Fehlerbehandlung, um unerwartete Probleme zu vermeiden, besonders wenn Du mit dynamischen Blattnamen arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich überprüfen, ob ein Blatt mit einem bestimmten Namen existiert? Verwende die Funktion WorksheetExists(wsName) und übergebe den Namen des Blattes.

2. Was tun, wenn der Name bereits vorhanden ist? Stelle sicher, dass Du vor dem Erstellen eines neuen Blattes mit demselben Namen die Existenz überprüfst, um Fehler zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige