Tabellenblatt Name auslesen und in Zelle schreiben

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Tabellenblatt Name auslesen und in Zelle schreiben
von: Fabian
Geschrieben am: 21.04.2015 09:47:52

Hallo zusammen,
Zum Verständnis meines Problems habe ich ein Bild angehängt und den relevanten Code eingefügt:
Userbild
<pre>Sub NewGroup()
Dim Zeile&, x&, MyMaxRow
For x = 1 To 220 'Spalten A-HL
Zeile = Cells(Rows.Count, x).End(xlUp).Row
MyMaxRow = IIf(Zeile > MyMaxRow, Zeile, MyMaxRow)
Next
Range("A13:HN28").Copy Destination:=Range("A" & MyMaxRow + 1)
'Bereich A12-HL27 kopieren und nach der letzen benutzten Zeile ausgeben
End Sub</pre>
<pre>Sub Kopieren()
Dim x As Integer

ActiveWorkbook.Sheets("Muster Sheet").Copy _
After:=ActiveWorkbook.Sheets("Timeline")
NewName = InputBox("Please insert the group name")
ActiveSheet.Name = NewName

End Sub</pre>
Also mit dem Auslösen des Buttons "Add New Group" wird der Bereich A13:HN28 kopiert und nach der letzten Zeile wieder eingefügt. Ebenfalls wird ein neues Tabellenblatt erzeugt und man wird aufgefordert einen Namen einzugeben.
Zu meiner Frage:
Gibt es eine Möglichkeit den Tabellennamen des erzeugten Blattes auszulesen und in den neuen Bereich, C29:C44, einzufügen? Wie auf dem Bild zu sehen ist, sind die Zellen C13:C28 verbunden.
Das ganze sollte dann mit jeder neuen Gruppe, die man hinzufügt, wiederholt werden.
Gruß
Fabian

Bild

Betrifft: AW: Tabellenblatt Name auslesen und in Zelle schreiben
von: Michael (migre)
Geschrieben am: 21.04.2015 10:21:28
Hallo Fabian!
Auf den Tabellenblattnamen des aktiven Blattes greifst Du ja bereits in Deinem Code zu:

ActiveSheet.Name = NewName

In diesem Fall setzt Du ihn, aber Du kannst diesen natürlich auch in eine Zelle schreiben lassen:
Range("A2").Value = ActiveSheet.Name
Genauso kannst Du den Blattnamen eines beliebigen Tabellenblattes abfragen: zB den Namen des 5. Blattes

Range("A2").Value = Worksheets(5).Name

In Deinem Code ist aber der neue Blattname ja sowieso schon in der Variablen "NewName" gespeichert - Du kannst ja auch mit dieser noch weiterarbeiten und bspw.
Range("C29:C44").Value = NewName
angeben.
LG
Michael

Bild

Betrifft: AW: Tabellenblatt Name auslesen und in Zelle schreiben
von: Fabian
Geschrieben am: 21.04.2015 11:33:20
Hallo Michael,
Vielen Dank erstmal für deine schnelle Hilfe.
Kann ich auch soetwas schreiben wie: Range("C" MyMaxRow + 1).Value = NewName ?
Also, dass es automatisiert immer die Zelle bennent?

Bild

Betrifft: AW: Tabellenblatt Name auslesen und in Zelle schreiben
von: Michael (migre)
Geschrieben am: 21.04.2015 11:43:56
Hallo Fabian!
Gerne. So kannst Du es nicht schreiben, aber ähnlich:
Range("C"&MyMaxRow + 1).Value = NewName Wichtig ist hier das "&".
Also, dass es automatisiert immer die Zelle bennent?
Da kommt es jetzt drauf an: Wenn sich Deine Variable MyMaxRow innerhalb des Makros, oder einer Schleife, immer wieder ändert, dann wird das natürlich entsprechend jeweils mit +1 hochgezählt. Wenn Du aber MyMaxRow nur einmal einen Wert innerhalb des Makros zuweist (ist glaube ich so in Deinem Code), dann bleibt es eben bei diesem Wert +1 und es wird nicht automatisch hochgezählt.
D.h. hier müsste entweder eine Art Schleifendurchlauf greifen oder Du setzt den Blattnamen gleich direkt in einem Bereich; so wie ich vorhin zB geschrieben habe

Range("C29:C44").Value = NewName

Damit steht dann in allen Zellen von C29:C44 der Blattname (bzw. der Inhalt der Variablen NewName).
LG
Michael

Bild

Betrifft: AW: Tabellenblatt Name auslesen und in Zelle schreiben
von: Fabian
Geschrieben am: 24.04.2015 10:09:17
Ich habe nun versucht die Code-Zeile einzufügen, bekomm es aber leider nicht zum laufen.
Es handelt sich um die Fettgedruckte Zeile unten im Code. Ziel ist immer noch die letzte benutzte Zelle in Spalte C des TimeLine sheets mit dem Namen zu versehen der für das neue Tabellenblatt eingegeben wurde.
Kannst du mir dabei nochmals helfen ?
Sub MusterKopieren()

Dim NewName As String
ActiveWorkbook.Sheets("Muster Sheet").Copy _
After:=ActiveWorkbook.Sheets("TimeLine")
NewName = InputBox("Please insert Group Name")
ActiveSheet.Name = NewName
Sheets("TimeLine").Range("C" & MyMaxRow).Value = NewName
End Sub



Bild

Betrifft: AW: Tabellenblatt Name auslesen und in Zelle schreiben
von: Michael (migre)
Geschrieben am: 26.04.2015 14:34:19
Hallo Fabian!
Wenn Dein angegebener Code vollständig ist (und Du beim Kopieren-und-Einfügen) nichts augelassen hast, dann fehlt Dir eine Wert-Zuweisung an die Variable "MyMaxRow".
Denn nur mit "MyMaxRow" kann Excel natürlich nichts anfangen - das ist ja nur der Name für einen Wert, aber welchen Wert hat dieser Name? Den musst Du natürlich zuweisen, so wie Du auch Deiner Variablen "NewName" einen Wert zuweist, und zwar in dem Fall über eine Inputbox (in diesem Fall einen Text, String-Wert).
D.h. in Deinem Code fehlt dann zumindest noch eine Deklarierung der "MyMaxRow"-Variablen, zB so
Dim MyMaxRow as Long
das schreibst Du am Besten zur "Dim"-Zeile für NewName.
Und dann musst MyMaxRow noch einen Wert, nämlich die Zeilennummer der letzten befüllten Zelle im Blatt "TimeLine", Spalte C erhalten. Das machst Du dann so:
MyMaxRow = Worksheets("TimeLine").Cells(Rows.Count, 3).End(xlUp).Row
Sheets("TimeLine").Range("C" & MyMaxRow).Value = NewName
In diesem Fall kannst Du Dir aber die Variable MyMaxRow eigentlich auch ganz sparen (hab das nur so angeführt, weil Du explizit danach gefragt hast). Das gleiche würdest Du so erreichen:
Worksheets("TimeLine").Cells(Rows.Count, 3).Value = NewName
Dabei kannst Du also auch die "Dim"-Zeile etc. für MyMaxRow weglassen, weil Du die gesamte Variable nicht brauchst.
Hilft?!
LG
Michael

Bild

Betrifft: AW: Tabellenblatt Name auslesen und in Zelle schreiben
von: Fabian
Geschrieben am: 27.04.2015 07:31:57
Hallo Michael,
erstmal sorry, dass ich erst jetzt antworte. Die MyMaxRow ist bereits Deklariert, dass hätte ich noch dazuschreiben sollen.
mit


MyMaxRow = Worksheets("TimeLine").Cells(Rows.Count, 3).End(xlUp).Row
Sheets("TimeLine").Range("C" & MyMaxRow).Value = NewName


funktioniert es wunderbar! Vielen Dank!!
Gruß
Fabian

Bild

Betrifft: Gern, freut mich. Danke für die Rückmeldung, owT
von: Michael (migre)
Geschrieben am: 27.04.2015 08:59:08
.

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Tabellenblatt Name auslesen und in Zelle schreiben"