Prüfen, ob ein Arbeitsblatt existiert (Excel VBA)

Oft kommt man bei der Excel Makro Programmierung in die Situation zu Prüfen, ob ein bestimmtes Arbeitsblatt vorhanden ist. Hierfür gibt es meines Wissens zwei Vorgehensweisen.

  1. Die erste Möglichkeit ist, mit einer Schleife durch alle Arbeitsblätter einer Arbeitsmappe zu gehen, um zu prüfen, ob das gesuchte Sheet mit dabei ist.
  2. Die zweite Variante nimmt die Brechstange und versucht das gewünschte Blatt zu refernzieren. Tritt ein Fehler auf, ist das Blatt nicht vorhanden.

Ich persönlich bevorzuge die erste Variante, da ich gerne – soweit möglich – auf provozierte Fehler verzichte, daher zeige ich Euch hier auch nur meinen „Favoriten“.

Die Funktion erwartet als Parameter den Namen des gesuchten Arbeitsblattes. Sollte das gesuchte Arbeitsblatt nicht in der aktiven Arbeitsmappe liegen, kann man optional als zweiten Parameter ein Workbook-Objekt angeben, in der gesucht werden soll. Als Ergebnis wird ein Boolean-Wert (true/false) zurückgeliefert.

Function WorksheetExists(strWorksheet As String, Optional ByRef cWB As Workbook = Nothing) As Boolean
    Dim sh As Worksheet
    Dim flg As Boolean
    
    On Error GoTo Err_Handler
    
    If cWB Is Nothing Then
        Set cWB = ActiveWorkbook
    End If
    
    flg = False
    For Each sh In cWB.Worksheets
        If sh.Name = strWorksheet Then
            flg = True
            Exit For
        End If
    Next

    WorksheetExists = flg
    Exit Function
    
Err_Handler:
    WorksheetExists = False
    
End Function
Dieser Beitrag wurde unter Excel, VBA abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Ein Kommentar zu Prüfen, ob ein Arbeitsblatt existiert (Excel VBA)

  1. Brechstange sagt:

    Wo ist das Problem mit der Brechstange in diesem Fall?

    1.) sie benötigt nur zwei Zeilen Quelltext und ist somit verständlicher.
    2.) bei vielen Arbeitsblättern dürfte sie auch schneller sein (sofern hinter Sheets eine Collection steckt und man mit einem Schlüssel anstatt Index arbeitet)

    Natürlich vermeide ich es ebenfalls, sinnlos Fehler zu provozieren – aber letztenlich ist immer die Lösung am Besten, welche am praxistauglichen ist. ;)

Schreibe einen Kommentar

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