Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1420to1424
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabellenblatt Name auslesen und in Zelle schreiben

Tabellenblatt Name auslesen und in Zelle schreiben
21.04.2015 09:47:52
Fabian
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

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt Name auslesen und in Zelle schreiben
21.04.2015 10:21:28
Michael
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

Anzeige
AW: Tabellenblatt Name auslesen und in Zelle schreiben
21.04.2015 11:33:20
Fabian
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?

AW: Tabellenblatt Name auslesen und in Zelle schreiben
21.04.2015 11:43:56
Michael
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

Anzeige
AW: Tabellenblatt Name auslesen und in Zelle schreiben
24.04.2015 10:09:17
Fabian
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


Anzeige
AW: Tabellenblatt Name auslesen und in Zelle schreiben
26.04.2015 14:34:19
Michael
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

Anzeige
AW: Tabellenblatt Name auslesen und in Zelle schreiben
27.04.2015 07:31:57
Fabian
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

Gern, freut mich. Danke für die Rückmeldung, owT
27.04.2015 08:59:08
Michael
.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige