vielleicht könnt ihr mir bei folgendem Problem helfen. Ich habe in einem Tabellenblatt eine Liste, bei der in Spalte A der Buchungskreis, in Spalte B der Gesellschaftsname und in Spalte C ein "x" steht, sofern diese Gesellschaft ausgewählt ist. Wenn die Gesellschaft nicht ausgewählt ist, dann bleibt die Zelle leer. Ich suche nun nach einer VBA Lösung, die mir für jede Gesellschaft, bei der in Spalte C ein "x" gesetzt ist, ein eigenes Tabellenblatt anlegt. Das Tabellenblatt soll nach dem Buchungskreis in Spalte A benannt werden und vor Neuanlage eines Tabellenblattes soll geprüft werden, ob für diese Gesellschaft das Tabellenblatt bereits vorhanden ist. Wenn es bereits vorhanden ist, erfolgt keine Doppelanlage.
Ich habe dazu bereits einen VBA-Code gegoogelt, den ich zugegebenermaßen nicht so ganz verstehe _
und daher nicht an meine Bedürfnisse anpassen kann. Der Code funktioniert grds wunderbar, prüft - wie auch von mir gewünscht - die Spalte C auf einen Eintrag und legt - sofern noch nicht vorhanden - ein neues Tabellenblatt an, allerdings mit dem Namen, der in Spalte C steht und nicht mit dem Namen in Spalte A. Außerdem würde ich den Code gerne so anpassen, dass nur bei einem Eintrag "x" in Spalte C ein Tabellenblatt angelegt wird und nicht bei jedem Eintrag.
Private Sub CommandButton2_Click()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Gesellschaften")
Dim c As Range
Application.ScreenUpdating = False
With Ws
For Each c In .Range("c4:c" & .Cells(.Rows.Count, "e").End(xlUp).Row)
If Not ExistiertBlattX(c.Text) Then
Wb.Worksheets("UVA Formularvorlage").Copy after:=Wb.Worksheets(Wb.Worksheets. _
Count)
ActiveSheet.Name = c.Text
End If
Next c
.Activate
End With
Set Wb = Nothing: Set Ws = Nothing: Set c = Nothing
End Sub
Dazu kommt noch diese Funktion (bringe ich leider nicht in das "schöne" VBA Format für das Forum):Function ExistiertBlattX(BlattName$, Optional MappeName$) As Boolean
Dim Wb As Workbook, Ws As Worksheet
ExistiertBlattX = False
If MappeName = "" Then
Set Wb = ActiveWorkbook
Else: Set Wb = Workbooks(MappeName)
End If
For Each Ws In Wb.Worksheets
If Ws.Name = BlattName Then
ExistiertBlattX = True
Exit For
End If
Next Ws
Set Wb = Nothing: Set Ws = Nothing
End Function
Super wäre dann noch, wenn der Code auch eine Prüfung beinhalten würde, dass ein ggf vorhandenes Tabellenblatt mit Namen des Buchungskreises aus Spalte A gelöscht wird, sofern in Spalte C kein "x" gesetzt ist, sodass ich am Ende immer nur für jene Gesellschaften ein eigenes Tabellenblatt habe, bei denen in der Liste in Spalte C ein "x" gesetzt ist.
Vielen Dank schon vorab für eure Hilfe!
Bernhard