Tabellennamen automatisch zuweisen
#1
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


Angehängte Dateien
.xlsx   Test.xlsx (Größe: 11,66 KB / Downloads: 7)
Top
#2
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
Top
#3
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.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#4
Hallo,

das ginge per VBA.
Gruß Atilla
Top
#5
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
Gruß Atilla
Top
#6
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
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste