Clever-Excel-Forum

Normale Version: Tabellennamen automatisch zuweisen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich hätte eine Frage an die Community:

Gibt es eine Möglichkeit, dass wenn ich nun in Zelle B7 "test_3" eintrage, dass dann die Tabelle in Spalte H unter "Entwurf" -> automatisch den Namen "test_3" erhält? (Siehe Anhang)

Sprich, kann ich den Tabellenname dynamisch zuweisen?

Vielen Dank im Voraus.
marco
Hallo!

Du hast es doch schon bei test_1 und test_2 hinbekommen. Schreibe in B7 =H3 und du hast, was du möchtest.

LG Alex
Hallo Marco,

ich verstehe deine Frage nicht. Wenn du jetzt (ausgehend von deiner Musterdatei) in B7 deinen Eintrag machst, wird er doch automatisch in H3 geschrieben. Sollte dich die Null stören, die ohne Eintrag entsteht, kannst du sie benutzerdefiniert mit
Code:
0;;
ausblenden.
Hallo,

das ginge per VBA.
Hallo,

weil ich die Problemstellung interessant fand, habe ich eine kleine Lösung per Vba ausgearbeitet.
Das Ganze ist auf Deine Beispielmappe ausgerichtet.
Bei jeder Änderung der Zellen in der Tabelle "Hauptkategorie" wird der Tabellenname entsprechend geändert.

Ich nutze den Index der zugehörigen Tabellen.
Zeile 2 der Hauptkategorie entspricht Lisobject(2)
Zeile 3 der Hauptkategorie entspricht Lisobject(3) usw.

Unten der Code gehört in das Code Modul der Tabelle mit den Listobjecten:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim lngErsteTabZ As Long
   Dim lngAuswahlZeile As Long
   Dim rngTab As Range

   Set rngTab = ActiveSheet.ListObjects(1).DataBodyRange
   If Not Intersect(Target, rngTab) Is Nothing Then
      If Application.CountIf(rngTab, Target.Value) > 1 Then
         MsgBox "Es existiert bereits eine Tabelle mit dem selben Namen!"
         Application.EnableEvents = False
         Application.Undo
         Application.EnableEvents = True
      Else
         If Target <> "" Then
            lngErsteTabZ = Target.ListObject.ListRows(1).Range.Row
            lngAuswahlZeile = Target.Row - lngErsteTabZ + 1
            ActiveSheet.ListObjects(lngAuswahlZeile + 1).Name = Target.Value
         End If
      End If
   End If

End Sub
Hallo Atilla,

großartig, vielen Dank!!
Du hast genau verstanden, was meine Problemstellung war. :23:

Könntest Du mir eventuell noch 1-2 Sätze zur Erklärung neben die Codes schreiben?
Ich finde VBA super spannend, jedoch empfinde ich es als äußerst sehr schwer die einzelnen Codes nachzuvollziehen..

Vielen Dank und liebe Grüße
Marco