Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Makro kopiertes Tabellenblatt umbenennen

Betrifft: Makro kopiertes Tabellenblatt umbenennen von: Manuela Klein
Geschrieben am: 17.10.2020 15:38:43

Hallo zusammen,

ich habe ein Makro gefunden, dass eine bereits vorhandene Tabelle kopiert, wenn in bestimmten Zellen ein Wert (bei mir wird es ein Name sein) eingetragen wird. Zusätzlich, wird das kopierte Tabellenblatt in dem Namen umbenannt, der in die jeweilige Zelle eingetragen wurde. Jetzt möchte ich das Makro aber so umwandeln, dass das Tabellenblatt wie gehabt kopiert wird, wenn in bestimmten Zellen etwas eingetragen wird, der Name des Tabellenblattes aber nicht in der Zelle steht, wo etwas eingetragen wurde, sondern 8 Spalten (Spalte L) weiter. Wichtig wäre auch noch zu erwähnen, dass in der Zelle, wo der Name des Tabellenblattes steht, eine Formel hinterlegt ist.

Im unten aufgeführten Makro wird abgeglichen, ob in Zeile 1 und Spalte E oder in Zeile 2 und Spalte E etc. etwas eingetragen wurde. Wenn ja, dann wird das kopierte Tabellenblatt in dem Namen umbenannt, der in Zeile 1 und Spalte E oder Zeile 2 und Spalte E etc. eingetragen wurde. Der tatsächliche Name würde aber bspw. in Zeile 1 und Spalte L oder in Zeile 2 und Spalte L etc. stehen. Allerdings ist hier eine Formel hinterlegt.

Wie kann man das unten aufgeführte Makro abändern, dass ein Tabellenblatt kopiert wird, wenn in Zeile 1 bzw. 2 und Spalte E etwas eingetragen wird, der Tabellenblattname aber in Zeile 1 bzw. 2 und Spalte L steht? Mein Problem ist, dass die Anwender, einen Namen mit dem Sonderzeichen Schrägstrich ("/") in Zeile 1 bzw. 2 und Spalte E eintragen können, allerdings dürfen Tabellenblattnamen keine Sonderzeichen wie bspw. ein Schrägstrich enthalten. Deswegen habe ich ein paar Spalten weiter eine Formel hinterlegt, der den Namen ohne des Schrägstrichs wiedergibt. Stattdessen wird dazwischen ein Leerzeichen eingefügt.

Makro:

Sub Worksheet_Change(ByVal Target As Excel.Range)
  If Target.Row = 1 And Target.Column = 5 _
  Or Target.Row = 2 And Target.Column = 5 _
  Or Target.Row = 3 And Target.Column = 5 _
       And Target.Cells.Count = 1 _
    And Target.Range("a1").Text <> "" Then
   If MsgBox("Tabellenblatt mit Name """ & Target.Text & """ anlegen ?", _
        vbYesNo, "Blatt Vorlage kopieren") = vbYes Then
Worksheets("Kalkulationsvorlage").Copy before:=Worksheets("Kalkulationsvorlage")
ActiveSheet.Name = Target.Value
End If
End If
End Sub

Betrifft: AW: Makro kopiertes Tabellenblatt umbenennen
von: Daniel
Geschrieben am: 17.10.2020 15:46:15

Hi

ActiveSheet.Name = Target.Offset(0, ein paar Spalten als Zahl).Value

Gruß Daniel

Betrifft: AW: Makro kopiertes Tabellenblatt umbenennen
von: Manuela
Geschrieben am: 17.10.2020 16:09:41

Hallo Daniel,

vielen Dank für deine schnelle Antwort. Ich weiß leider nicht an welcher Stelle ich den Code eintragen muss. Außerdem betrifft es mehrere Zellen in denen der Name stehen könnte (Zeile 1 + Spalte 8/Zeile 2 + Spalte 8 etc.).

V.G. Manuela

Betrifft: AW: Makro kopiertes Tabellenblatt umbenennen
von: Daniel
Geschrieben am: 17.10.2020 16:42:37

Naja, da wo es bisher auch steht, halt ohne das .Offset.
Du musst das mit dem .Offset einfach in deinem bisherigen Code ergänzen.

(Irgendwie erinnert deine Frage an folgende Situation:
1. Frage: wie fahre ich am besten mit dem Auto von A nach B?
2. Frage: wo war nochmal der erste Gang?)

Target ist immer die Zelle, die geändert wurde, die kann in Zeile 1 oder in Zeile 2 stehen.
.Offset springt dann von dieser Zelle um die genannte Spaltenanzahl nach rechts.

Gruß Daniel

Betrifft: AW: Makro kopiertes Tabellenblatt umbenennen
von: Manuela
Geschrieben am: 17.10.2020 17:01:19

Hallo Daniel,

vielen Dank für deine Antwort. Den ersten Gang finde ich, aber ich weiß nicht wie ich von A nach B komme ;-). Ich kenne mich mit Makros nicht sehr gut aus. Makros aufzeichnen kann ich und ein paar kleinere Anpassungen vornehmen, das war es aber auch schon. Mein Makro habe ich im Netz gefunden, ich selber habe es gar nicht geschrieben, deswegen, kann der Eindruck entstehen, dass ich weiß wie ich von A nach B komme, aber den ersten Gang nicht finde ;-). Vielleicht kam das nicht richtig verständlich rüber, dass ich Anfängerin bin. Zwischenzeitlich habe ich noch etwas im Internet geforscht. Wenn ich es richtig verstanden habe, gibt es aber noch ein weiteres "Problem". Da das Makro ausgeführt werden soll, wenn sich der Wert in einer Zelle ändert, wo eine Formel hinterlegt ist, muss man scheinbar mit Sub Worksheet_Calculate () arbeiten. Sub Worksheet_Change(ByVal Target As Range) tritt wohl nur bei manueller Änderung einer Zelle ein. Und jetzt bin ich vollkommen raus...

V.G. Manuela

Betrifft: AW: Makro kopiertes Tabellenblatt umbenennen
von: Daniel
Geschrieben am: 17.10.2020 17:15:21

Naja, auch wenn man Code im Internet findet, sollte man diese verstehen, bevor man ihn verwendet.

Du bist doch hoffentlich in der Lage, die Programmzeile zu finden, die mit "ActiveSheet.Name = " beginnt und wie angegeben zu ergänzen.

Deiner Beschreibung nach gibt der Anwender neun Namen in E1 oder E2 ein und die Formel steht ein paar Spalten weiter.
Wenn du dann E1 und E2 überwachst, ist Change doch das richtige Event.

Ansonsten solltest du besser deine Datei hier hochladen und beschreiben, was du erreichen willst.

Gruß Daniel

Betrifft: AW: Makro kopiertes Tabellenblatt umbenennen
von: Manuela
Geschrieben am: 17.10.2020 18:29:09

Hallo,

eine Beispiel Datei habe ich jetzt hochgeladen.

https://www.herber.de/bbs/user/140939.xlsm

Vielen Dank für die Hilfe.

Betrifft: AW: Makro kopiertes Tabellenblatt umbenennen
von: Daniel
Geschrieben am: 18.10.2020 00:20:28

Das funktioniert schon so wie ich geschrieben habe.
Man muss nur aufgrund der Verbundzellen D11:F11 mit dem Offset aufpassen.
Das ist wegen dem Zellverbund nicht +3, wie der Sprung von D auf G vermutet lassen würde, sondern nur +1.

ändere also die Zeile
ActiveSheet.Name = Target.Value
So ab
ActiveSheet.Name = Target.Offset(0, 1).Value

Gruß Daniel

Betrifft: AW: Makro kopiertes Tabellenblatt umbenennen
von: Manuela
Geschrieben am: 18.10.2020 09:59:57

Hallo Daniel,

vielen lieben Dank für deine Hilfe und Geduld! Es funktioniert.

V.G. Manuela