Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Abbrechen wenn Tabelle nicht vorhanden (VBA)

Forumthread: Abbrechen wenn Tabelle nicht vorhanden (VBA)

Abbrechen wenn Tabelle nicht vorhanden (VBA)
05.10.2014 21:18:45
Henner
Hallo zusammen,
ich möchte mein bestehendes Makro dahingehend erweitern, dass es beendet wird wenn eine vorgegebene Tabelle nicht vorhanden ist. Dafür konnte ich als Lösungsansatz bereits folgende Codes zusammensuchen, bekomme aber leider nicht das gewünschte Ergebnis.
(Code: http://ms-excel.eu)

Sub Tabellenname_abfragen()
Dim i As Integer
For i = 1 To Worksheets.Count
If Worksheets(i).Name = "Break" Then
Worksheets(i).Activate
MsgBox Worksheets(i).Name & " ist vorhanden"
End If
Next
End Sub

Sub Tabelle_mit_Name_anlegen()
Dim WS As Worksheet
Dim Hinweis As Byte
For Each WS In Worksheets
If WS.Name = "Break" Then
WS.Activate
MsgBox WS.Name & " ist vorhanden"
Exit Sub
End If
Next WS
Hinweis = MsgBox("Tabellenblatt existiert nicht. Anlegen?", 1, "Hinweis")
If Hinweis = 1 Then
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Break"
End If
End Sub

Ich habe bereits mehrere Versuche unternommen, entweder lande ich immer beim Exit Sub oder die Tabelle wird nicht gesehen obwohl sie da ist.
So soll der Code funktionieren:

Sub BestehendesMakro()
Mein bestehender Code
Abfrage existiert die Tabelle "Daten"?
Nein: msgBox, anschliessend Exit Sub
Ja: Code weiter ausführen
Mein bestehender Code
End Sub

Ich hoffe ich konnte mein Anliegen einigermassen Verständlich ausdrücken.
Besten Dank & Gruss, Henner

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abbrechen wenn Tabelle nicht vorhanden (VBA)
06.10.2014 00:57:37
Adis
Hallo
ich denke die einfachste Lösung dürfte der untere Code sein.
Ich benutze gerne Const oder auch eine Zelle für den Suchwert.
Die Variable Blatt dient als Merker ob das Blatt gefunden wurde.
Const Suchname = "Daten"
Sub Tabellenname_abfragen()
Dim i As Integer, Blatt As String
'.... Code vor der Abfrage
'Abfrage nach Tabellenblatt
For i = 1 To Worksheets.Count
If Worksheets(i).Name = Suchname Then Blatt = "Ja": Exit For
Next
If Blatt = Empty Then MsgBox Suchname & "  nicht gefunden": Exit Sub
'....  weiter im Programm
End Sub
Gruss Adis

Anzeige
AW: oder so, nur ohne For-Schleife!
06.10.2014 06:29:27
Luschi
Hallo Werner,
ich mach das immer so:

Sub Tabelle_mit_Name_anlegen()
Dim WS As Worksheet
Dim Hinweis As Byte
On Error Resume Next
Set WS = ThisWorkbook.Worksheets("Break")
On Error GoTo 0
If WS Is Nothing Then
Hinweis = MsgBox("Tabellenblatt 'Break' existiert nicht. Anlegen?", vbYesNo, "Hinweis")
If Hinweis = vbYes Then
Set WS = ThisWorkbook.Worksheets.Add(After:=Worksheets(Worksheets.Count))
WS.Name = "Break"
Else
Exit Sub
End If
Else
WS.Activate
MsgBox WS.Name & " ist vorhanden"
End If
Set WS = Nothing
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Abbrechen eines VBA-Makros, wenn eine Tabelle nicht vorhanden ist


Schritt-für-Schritt-Anleitung

Um ein Excel VBA-Makro abzubrechen, wenn eine bestimmte Tabelle nicht vorhanden ist, kannst du den folgenden Code verwenden. Dieser Code prüft, ob das Tabellenblatt "Daten" existiert, und bricht das Makro ab, falls dies nicht der Fall ist.

Sub BestehendesMakro()
    Dim Blatt As Worksheet
    On Error Resume Next
    Set Blatt = ThisWorkbook.Worksheets("Daten")
    On Error GoTo 0

    If Blatt Is Nothing Then
        MsgBox "Das Tabellenblatt 'Daten' existiert nicht.", vbExclamation
        Exit Sub
    End If

    ' Weiterer Code hier
End Sub

Häufige Fehler und Lösungen

  1. Tabelle wird nicht gefunden, obwohl sie vorhanden ist
    Lösung: Stelle sicher, dass der Name der Tabelle exakt übereinstimmt, einschließlich Groß- und Kleinschreibung. Prüfe auch, ob das Blatt eventuell ausgeblendet ist.

  2. Code bricht mit Exit Sub ab, obwohl die Tabelle vorhanden ist
    Lösung: Überprüfe, ob der Code zur Fehlerbehandlung (On Error Resume Next) korrekt gesetzt ist und dass du die richtige Arbeitsmappe ansprichst.


Alternative Methoden

Eine alternative Methode, um zu überprüfen, ob ein Tabellenblatt existiert, besteht darin, eine Schleife zu verwenden. Allerdings kann dieser Ansatz ineffizient sein, wenn du viele Arbeitsblätter hast. Hier ist ein Beispiel:

Sub Tabellenname_abfragen()
    Dim i As Integer
    Dim BlattGefunden As Boolean
    BlattGefunden = False

    For i = 1 To Worksheets.Count
        If Worksheets(i).Name = "Daten" Then
            BlattGefunden = True
            Exit For
        End If
    Next i

    If Not BlattGefunden Then
        MsgBox "Das Tabellenblatt 'Daten' existiert nicht.", vbExclamation
        Exit Sub
    End If

    ' Weiteren Code hier ausführen
End Sub

Praktische Beispiele

Hier sind zwei Beispiele, wie du den VBA-Code implementieren kannst:

  1. Einfacher Abbruch bei Nichtexistenz:
Sub Beispiel1()
    Dim WS As Worksheet
    On Error Resume Next
    Set WS = ThisWorkbook.Worksheets("Break")
    On Error GoTo 0

    If WS Is Nothing Then
        MsgBox "Das Tabellenblatt 'Break' existiert nicht.", vbExclamation
        Exit Sub
    End If

    ' Code zur Verarbeitung des Blattes
End Sub
  1. Tabelle anlegen, wenn sie nicht existiert:
Sub Beispiel2()
    Dim WS As Worksheet
    On Error Resume Next
    Set WS = ThisWorkbook.Worksheets("Break")
    On Error GoTo 0

    If WS Is Nothing Then
        If MsgBox("Das Tabellenblatt 'Break' existiert nicht. Möchtest du es anlegen?", vbYesNo) = vbYes Then
            Set WS = ThisWorkbook.Worksheets.Add(After:=Worksheets(Worksheets.Count))
            WS.Name = "Break"
        Else
            Exit Sub
        End If
    End If

    WS.Activate
    MsgBox "Das Tabellenblatt 'Break' ist vorhanden."
End Sub

Tipps für Profis

  • Verwende On Error Resume Next und On Error GoTo 0 nur dann, wenn du sicherstellen kannst, dass du die Fehlerbehandlung korrekt handhabst. Ansonsten kann dies zu unvorhergesehenen Fehlern führen.
  • Halte deine Variablen gut organisiert und verwende aussagekräftige Namen, um die Lesbarkeit deines Codes zu verbessern.
  • Teste deinen Code regelmäßig, um sicherzustellen, dass er in verschiedenen Szenarien funktioniert, besonders wenn du mit mehreren Arbeitsblättern arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich den VBA-Code abbrechen, wenn eine Tabelle nicht vorhanden ist?
Du kannst den VBA-Code mit einer einfachen If-Bedingung abbrechen, die prüft, ob das Tabellenblatt existiert. Wenn nicht, kannst du eine Meldung anzeigen und mit Exit Sub das Makro abbrechen.

2. Gibt es eine Möglichkeit, das VBA-Makro zu optimieren?
Ja, anstatt eine Schleife zu verwenden, kannst du die On Error-Anweisung nutzen, um die Existenz eines Arbeitsblattes effizient zu überprüfen. Das spart Zeit, besonders bei großen Arbeitsmappen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige