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