In Excel-Makro neues Blatt erzeugen und umbenennen

Hallo Leute!

Ich habe ehrlich gesagt in puntco Makros nur Ahnung, wenn’s ums Aufzeichnen geht.

Mein Problem:

Ich habe eine Gesamtliste mit Abnehmern, die im Prinzip alle mehrfach zu unterschiedlichen Daten mit unterschiedlichen Mengen auftauchen.

Per Makro erzeuge ich für jeden Abnehmer ein neues Tabellenblatt.
So weit, so gut.

Jetzt soll aber dieses neue Blatt automatisch umbenannt werden in den Namen des Abnehmers. Dieser Name steht immer in Zelle A4.

Wenn ich das per Makro-Aufzeichnung mache, setzt Excel ständig den konkreten Namen rein und nichts Variables, das auch beim nächsten Lauf funktionieren würde.

Außerdem soll das neue Blatt bitte immer ans Ende gestellt werden und nicht an den Anfang oder eine Stelle relativ zur Einfügeposition.

Wie kriege ich das hin?

Sub KopiereInNeuesBlatt()

’ KopiereInNeuesBlatt Makro
’ Markierung in ein neues Blatt kopieren
’ und dieses umbenennen


Cells.Select
Selection.Copy
Sheets.Add
ActiveSheet.Paste
Rows(„3:4“).Select
Selection.Columns.AutoFit
Range(„A4“).Select
Application.CutCopyMode = False
Selection.Copy
Sheets(„Tabelle4“).Name = „LINDNER“
Sheets(„LINDNER“).Select
Application.CutCopyMode = False
Sheets(„LINDNER“).Move After:=Sheets(2)
End Sub

In der Hoffnung auf Eure Tips!

Gruß
Hans

Hallo Hans.

Das hier verstehe ich noch nicht ganz:

Dieser Name steht immer in Zelle A4.

Dies hier

Move After:=Sheets(2)

brauchst Du eigentlich nur abändern in:

Move After:=Sheets(Sheets.Count)

Viele Grüße
Carsten

neues Blatt erzeugen und umbenennen
Vielen Dank für Deine schnelle Antwort, Carsten!

Das hier verstehe ich noch nicht ganz:

Dieser Name steht immer in Zelle A4.

Also, die ersten 3 Zeilen sind mit Überschriften belegt.
In Spalte A stehen die Namen der Abnehmer: Müller, Meier, Lindner…
In A4 steht also der erste relevante Name und in diesen soll das Blatt umbenannt werden.

Oder kurz und abstrakt:
Das Tabellenblatt soll umbenannt werden. Der neue Name soll der Inhalt von A4 sein.

In der Hoffnung auf weitere Hilfe

Gruß
Hans

Hi HaFri,
Select ist zu 99% unnötig und macht den Code schwerere lesbar aber st kein Vorwurf, Makroaufzeichnung bedeutet massig Select.

zu deiner Anfrage:

Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
activesheet.name=range(„A4“)

Gruß
Reinhard

Quark
Hi HaFri,
Merker=activesheet.range(„A4“)
Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
activesheet.name=Merker
Gruß
Reinhard

1 „Gefällt mir“

Hallo Reinhard!

Danke erstmal für Deine Hilfe. Das Umbennen klappt super.
Aber das Verschieben noch nicht.
Ich habe Deinen Code jetzt folgendermaßen in mein Makro eingebaut:


Cells.Select
Selection.Copy
Range(„A4“).Select
Sheets.Add
ActiveSheet.Paste
Rows(„3:4“).Select
Selection.Columns.AutoFit
Range(„A4“).Select
Merker = ActiveSheet.Range(„A4“)
Worksheets.Move after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Merker

Merker=activesheet.range(„A4“)
Worksheets.Add.Move after:=Worksheets(Worksheets.Count)

Das Add und Move mußte ich auseinander nehmen, weil Excel sonst scheinbar vergessen hat, was es vorher aus dem Haupt-Tabellenblatt kopiert hat. „Laufzeitfehler 1004: Die Paste-Methode des Worksheet-Objekts konnte nicht ausgeführt werden.“

activesheet.name=Merker

Wenn ich das Makro jetzt so ausführe, kommt bei dem Befehl
Worksheets.Move after:=Worksheets(Worksheets.Count)
die Meldung „Damit wird die Arbeitsmappe ohne Speicherung geschlossen werden. Einige Module werden verloren gehen. Sollen die ausgewählten Blätter trotzdem verschoben werden? [Ja] [Nein]“

Und auch wenn ich [Ja] drücke, verschiebt er nichts.
Bei [Nein] sagt er „Laufzeitfehler 1004: Die Methode Move für das Objekt Sheets ist fehlgeschlagen.“

In der Hoffnung auf weitere Hilfe

Gruß
Hans

Hallo Hans,

folgende ANpassung sollte es tun:

 Cells.Select
 Selection.Copy
 Range("A4").Select
 Sheets.Add
 ActiveSheet.Paste
 Rows("3:4").Select
 Selection.Columns.AutoFit
 Range("A4").Select
 Merker = ActiveSheet.Range("A4")
 ActiveSheet.Move after:=Sheets(Sheets.Count)
 ActiveSheet.Name = Merker

Gruß
Franz

1 „Gefällt mir“

Hallo Hans.

Wäre es interessant für Dich, wenn Excel dich nach dem Namen für das neue Tabellenblatt fragt?

Falls ja, müßte ich noch einen ganzen Sack voll Fragen stellen.

Viele Grüße
Carsten

Danke Franz!

ActiveSheet.Move after:=Sheets(Sheets.Count)

Genau da lag der Hase im Pfeffer. :smile:

Gruß
Hans

Hallo Carsten!

Wäre es interessant für Dich, wenn Excel dich nach dem Namen
für das neue Tabellenblatt fragt?

Danke sehr, aber das ist nicht nötig, weil der Name wirklich immer aus der Zelle A4 geholt werden soll.

Aber ich hab gerade ein weiteres Problem gepostet „Excel-Makro: Zwischen- und Gesamt-Summe einfüge“ und hoffe, daß Du mir da auch helfen kannst. :smile:

Gruß
Hans

Ganz …
… herzlichen Dank Euch Dreien! Ihr habt mir sehr geholfen.

Mein erstes Problem ist damit gelöst. :smile:

Aber ich habe gerade schon das zweite (für mich) viel schwierigere hier gepostet:
http://www.wer-weiss-was.de/cgi-bin/forum/showarticl…

Wäre toll, wenn Ihr mir auch damit helfen würdet.

Gruß & Dank nochmals
Hans