Mit VBA überprüfen, ob ein Excel-Reg. existiert

Hallo!

Bei meiner Programmierung bin ich wieder mal auf ein Problem gestoßen, doch weder bei Internetrecherchen, noch bei w-w-w-Suchen und auch nicht die Hilfe von VBA konnten mir weiterhelfen.

Ich habe folgendes Problem. Ich habe in einer Datei verschiedene Inhalte stehen. Diese sind einem Überbegriff zugeordnet. Nun soll für jeden Überbegriff ein Register in einem Excel-File angelegt werden. Die ersten könnte ich per Hand anlegen, doch wenn jetzt ein neuer Überbegriff hinzukommt, sollte das Programm feststellen, dass das Register fehlt und es anlegen.

Das Problem:
Wie überprüfe ich mit Excel, ob ein Register, das ich aufrufen will, angelegt ist oder nicht? Ich finde dafür keine Lösung.

Schöne Grüße
Thorsten

Hallo!

Hallo!

Nun soll für jeden Überbegriff ein Register in
einem Excel-File angelegt werden. Die ersten könnte ich per
Hand anlegen, doch wenn jetzt ein neuer Überbegriff
hinzukommt, sollte das Programm feststellen, dass das Register
fehlt und es anlegen.

Das Problem:
Wie überprüfe ich mit Excel, ob ein Register, das ich aufrufen
will, angelegt ist oder nicht? Ich finde dafür keine Lösung.

Variante 1:

indem man versucht das Blatt anzusprechen und dabei einen Fehler abfängt.
Gelingt es das Blatt fehlerfrei anzusprechen, kann davon ausgegangen werden, dass es existiert:

Public Function BlattVorhanden(NameBlatt As String) As Boolean
Dim tester As Long
On Error Resume Next
tester = ActiveWorkbook.Worksheets(NameBlatt).Index
If Err.Number = 0 Then BlattVorhanden = True
On Error GoTo 0
End Function

Variante 2:

Indem man die Auflistung der Blätter in einer Schleife durchläuft und prüft, ob ein Name mit dem vorgegebenen Namen übereinstimmt.

Public Function BlattVorhanden2(NameBlatt As String) As Boolean
Dim blatt As Worksheet
For Each blatt In ActiveWorkbook.Worksheets
 If blatt.Name = NameBlatt Then BlattVorhanden2 = True: Exit For
Next blatt
End Function

Wenn es sich um sehr viele Tabellenblätter handelt, ist die erste Variante die schnellste, da nicht jedes Blatt geprüft wird.

Ein Code zum Einfügen des neuen Blattes könnte dann so aussehen:

...
neuerName="mein neues Blatt"
If Not Blattvorhanden(neuerName) Then
 ThisWorkbook.Worksheets.Add.Name=neuerName
End If
...

Viele Grüße, tester