Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Tabellenblattnamen in Zelle einfügen





Frage

Hallo! Ich habe gleich zwei Fragen zu den Tabellenblattnamen: Ich möchte in die Zelle A7 den aktuellen Tabellenblattnamen eintragen. Dazu habe ich die Formel =RECHTS(ZELLE("Dateiname";A7);LÄNGE(ZELLE("Dateiname";A7))-FINDEN("]";ZELLE("Dateiname";A7);1)) ausgebrütet, die tatsächlich zu funktionieren scheint. Aber wahrscheinlich denke ich mal wieder viel zu kompliziert! Weiß jemand einen einfacheren Weg, eine Funktion oder ein Makro vielleicht? Bestimmt kennt jemand auch eine Methode, in einer Tabelle sämtliche Blattnamen der Mappe aufzulisten? Vielen Dank schon mal im Voraus!! Gorinth

Antwort 1 von haribo8071

Gibt doch einfach in die betreffende Zelle
=ZELLE("dateiname") ein.

Antwort 2 von Gorinth

Hallo haribo8071,

danke für Deine Antwort!

=ZELLE("Dateiname") habe ich bereits probiert. Aber dann bekomme ich als Ergebnis - zumindest unter Excel 2002 - den kompletten Pfad. Es soll aber nur der Tabellenblattname sein.

Mit den o.g. Verrenkungen lässt sich der zwar "herausholen", aber das muss doch irgendwie einfacher gehen...

Schönen Gruß,
Gorinth

Antwort 3 von schnallgonz

N´abend,

Hallo Gorinth,
mein Vorschlag schreibt Dir den jeweiligen Blattnamen bei jedem Blattaktivieren in A7.
Damit wird bei jedem Blattwechsel "A7" angesprungen.
Wenn Dich das nicht stört, probiers mal aus.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Range("A7").Activate
ActiveCell = ActiveSheet.Name
End Sub


Du musst den Code als Ereignis Deiner Mappe zuordnen:
mit ALT+F11 Wechsel in die VBA Umgebung, dort
Doppelklick auf Deine Arbeitmappe im linken Fenster
und dann im rechten Fenster obigen Code einfügen.


Alle Blattnamen listet folgender Code:


Sub BlattNamenListen()
Dim Blatt As Worksheet
Dim i As Integer
´Abfrage, ob geschrieben werden soll, falls Daten in A1 ff
i = MsgBox("Alle Blattnamen in dieses Blatt ab Zelle A1 schreiben. Bist Du sicher?", _
    1 + vbQuestion, "Sicherheitsabfrage")
If i = 2 Then Exit Sub
Range("A1").Select
´Blattname listen
For Each Blatt In ActiveWorkbook.Sheets
 ActiveCell.Value = Blatt.Name
 ActiveCell.Offset(1, 0).Select
Next Blatt
End Sub



Als einfaches Makro anlegen und vielleicht einer Schaltfläche zuordnen oder einem Icon in der Symbolleiste.
Bei Makroausführung werden alle Blattnamen in die Zellen A1 , A2 usw geschrieben und zwar in dem Blatt, welches gerade aktiv ist.
Damit Du nicht versehentlich Daten in A1 ff überschreibst, fragt vor Ausführung eine MsgBox nochmal nach..


MfG
schnallgonz

Antwort 4 von schnallgonz

Nachtrag zum 2. Listing

Ich habe nicht 100% auf die Formatierung im Forum geachtet.
Wenn Du den Code kopierst, achte darauf, dass der Unterstrich "_" am Zeilenende steht und die Kommentare mit einem Hochkomma ´ beginnen.
MfG
schnallgonz

Antwort 5 von want2cu

Hallo,

m.E: geht das eben nicht einfacher. Für alle anderen Varianten habe ich hier nochmal alle mir bekannten Formeln gepostet.

kompletter Dateipfad bis zum Arbeitsblatt
=ZELLE("dateiname";$A$2)

Dateipfad bis zum Dateinamen ohne die [eckigen Klammern]
=WECHSELN(LINKS(ZELLE("Dateiname";A2);-1+FINDEN("]";ZELLE("Dateiname";A2)));"[";"")

Nur Verzeichnispfad
=LINKS(ZELLE("Dateiname";A2);FINDEN("[";ZELLE("Dateiname";A2))-2)

Name der Datei
=TEIL(ZELLE("Dateiname";A2);FINDEN("[";ZELLE("Dateiname";A2))+1;FINDEN("]";ZELLE("Dateiname";A2))-FINDEN("[";ZELLE("Dateiname";A2))-1)

Name des Arbeitsblattes
=TEIL(ZELLE("Dateiname";A2);FINDEN("]";ZELLE("Dateiname";A2))+1;31)

CU
want2cu

Antwort 6 von Gorinth

Hallo schnallgonz,

Deine Makros habe ich gleich ausprobiert, genau das, was ich brauchen kann! Danke!!


Hallo want2cu,

na, und ich dachte, meine Formel wäre schon lang! Persönlich habe ja nichts gegen lange Formeln. Im Gegenteil, ich finde, ein paar Verschachtelungen entwickeln eine ganz eigene Ästhetik... Vielen Dank auch an Dich!!

Schönen Gruß,
Gorinth