ich habe ein Makro gefunden, dass eine bereits vorhandene Tabelle kopiert, wenn in bestimmten Zellen ein Wert (bei mir wird es ein Name sein) eingetragen wird. Zusätzlich, wird das kopierte Tabellenblatt in dem Namen umbenannt, der in die jeweilige Zelle eingetragen wurde. Jetzt möchte ich das Makro aber so umwandeln, dass das Tabellenblatt wie gehabt kopiert wird, wenn in bestimmten Zellen etwas eingetragen wird, der Name des Tabellenblattes aber nicht in der Zelle steht, wo etwas eingetragen wurde, sondern 8 Spalten (Spalte L) weiter. Wichtig wäre auch noch zu erwähnen, dass in der Zelle, wo der Name des Tabellenblattes steht, eine Formel hinterlegt ist.
Im unten aufgeführten Makro wird abgeglichen, ob in Zeile 1 und Spalte E oder in Zeile 2 und Spalte E etc. etwas eingetragen wurde. Wenn ja, dann wird das kopierte Tabellenblatt in dem Namen umbenannt, der in Zeile 1 und Spalte E oder Zeile 2 und Spalte E etc. eingetragen wurde. Der tatsächliche Name würde aber bspw. in Zeile 1 und Spalte L oder in Zeile 2 und Spalte L etc. stehen. Allerdings ist hier eine Formel hinterlegt.
Wie kann man das unten aufgeführte Makro abändern, dass ein Tabellenblatt kopiert wird, wenn in Zeile 1 bzw. 2 und Spalte E etwas eingetragen wird, der Tabellenblattname aber in Zeile 1 bzw. 2 und Spalte L steht? Mein Problem ist, dass die Anwender, einen Namen mit dem Sonderzeichen Schrägstrich ("/") in Zeile 1 bzw. 2 und Spalte E eintragen können, allerdings dürfen Tabellenblattnamen keine Sonderzeichen wie bspw. ein Schrägstrich enthalten. Deswegen habe ich ein paar Spalten weiter eine Formel hinterlegt, der den Namen ohne des Schrägstrichs wiedergibt. Stattdessen wird dazwischen ein Leerzeichen eingefügt.
Makro:
Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Row = 1 And Target.Column = 5 _
Or Target.Row = 2 And Target.Column = 5 _
Or Target.Row = 3 And Target.Column = 5 _
And Target.Cells.Count = 1 _
And Target.Range("a1").Text "" Then
If MsgBox("Tabellenblatt mit Name """ & Target.Text & """ anlegen ?", _
vbYesNo, "Blatt Vorlage kopieren") = vbYes Then
Worksheets("Kalkulationsvorlage").Copy before:=Worksheets("Kalkulationsvorlage")
ActiveSheet.Name = Target.Value
End If
End If
End Sub