Abfragen ob Blatt bereits existiert

Hallo Leute!

Ich bin’s mal wieder; mit folgender Frage:

Das Makro zum Erstellen und Formatieren eines Blattes soll logischerweise nicht ausgeführt werden, wenn dieses bereits existiert.

Bisher habe ich mir so beholfen:

If Sheets.Count \> 1 Then
 Exit Sub
 End If

Inzwischen gibt es aber mehrere Blätter, so daß das nicht mehr klappt.

Mir schwebt eine Bedingung vor, die in etwa so aussieht:

If Sheet "Gesamtliste" Exists Then
...

Aber ich krieg’s nicht hin.
Wie ist die korrekte Syntax?

In der Hoffnung auf Eure Tips!

Gruß
Hans

PS: „Gesamtliste“ ist übrigens die Bezeichnung, in die ich das Blatt umbenannt habe (also das was im VBA-Editor in Klammern dahinter steht) und nicht der eigentliche Name des Objektes. Dieser lautet weiterhin mal „Tabelle1“, mal „Tabelle2“ oder „TabelleX“ usw., also z.B.

Tabelle1 (Gesamtliste)

Hallo Leute!

Hi,

Mir schwebt eine Bedingung vor, die in etwa so
aussieht:

If Sheet „Gesamtliste“ Exists Then

Aber ich krieg’s nicht hin.
Wie ist die korrekte Syntax?

On Error Resume Next
If Worksheets("Gesamtliste") Is Nothing Then
 On Error Goto 0
 deineProzedur
End If

In der Hoffnung auf Eure Tips!

Gruß.Timo

Gruß
Hans

Das Makro zum Erstellen und Formatieren eines Blattes soll
logischerweise nicht ausgeführt werden, wenn dieses bereits
existiert.

Hi Hans,

Option Explicit

Sub Makro1()
Dim vorhanden As Boolean, n As Worksheet
For Each n In ThisWorkbook.Worksheets
 If n.Name = "Gesamtliste" Then
 vorhanden = True
 Exit For
 End If
Next n
If vorhanden = False Then Call MeinMakro
End Sub

Sub MeinMakro()
'...
End Sub

Gruß
Reinhard

Hallo Hans.

Ich vermute, daß diese Abfrage immer dann ausgeführt werden soll, wenn Du ein neues Blatt für einen neuen Abnehmer zur Datei hinzufügst.

Ich habe hier mal was geschrieben, was eigentlich Deinen Vorstellungen entsprechen könnte:

  • Bitte gehe dazu wieder in der Visual Basic-Editor

  • Doppelklicke im Projekt-Explorer auf ein Modul

  • Kopiere den folgenden Code in das Code-Fenster des Moduls:

    Function GleicherName(NeuerName As String) As Boolean
    Dim tmpSheet As Integer
    For tmpSheet = 1 To Sheets.Count
    If Sheets(tmpSheet).Name = NeuerName Then
    MsgBox „Dieser Name existiert schon für ein Tabellenblatt“
    GleicherName = True
    Exit For
    End If
    Next
    End Function

  • Bitte öffne jetzt das Code-Fenster, das die Prozedur zum Umbenennen der Tabellenblätter enthält

  • Dort kannst Du an geeigneter Stelle (die ich nicht kenne) den nun folgenden Code einfügen:

    If GleicherName(Sheets(„Gesamttabelle“).Cells(4, 1)) = True Then Exit Sub

Wenn ich mich recht erinnere, standen doch die Namen immer in Zelle A4 (‚Cells(4, 1)‘), oder? Falls nicht, dann mußt Du den Code noch entsprechend anpassen.

Kannst Du ja mal ausprobieren

Viele Grüße
Carsten

Herzlichsten Dank an Euch Drei.
Die Lösungen hab ich alle ausprobiert und sie funktionieren einwandfrei.
Aber ich werde wieder nicht verraten, welche ich letztendlich einbaue, damit niemand enttäuscht ist umsonst gearbeitet zu haben. :smile:

Gruß
Hans