Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1668to1672
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

Neue Tabellenblätter auf Basis Liste

Neue Tabellenblätter auf Basis Liste
29.01.2019 22:10:19
Dubach
Ich habe in meiner Excel-Datei zwei Sheets: "Vorlage" und "Administration". Das Sheet "Vorlage" soll gemäss Angaben im Sheet "Administration" kopiert und umbenennt werden. Zusätzlich sollen Formelteile mit Suchen/Ersetzen angepasst werden. Alle Vorgaben befinden sich im Sheet "Administration":
-------------------------------------
Sheet Administration:
-------------------------------------
Monat | Default | Ersatz
Januar | Vorlage_ | Apfel_
Februar | Vorlage_ | Birne_
März | Vorlage_ | Orange_
Das Kopieren und umbenennen gemäss Vorgabe funktioniert. Nun habe ich aber ein Problem mit dem Suchen/Ersetzen. Wie kann ich die entsprechende Zeile abfragen?
Hier mein bisheriger Makrobefehl:

Sub NeueBlaetterErzeugen()
For Each NeueTabelle In Worksheets("Administration").Range("tb_Administration[Monat]").Value
Sheets("Vorlage").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = NeueTabelle
Cells.Select
Cells.Replace What:="tb_Administration[Default]", Replacement:="tb_Administration[Ersatz]"
Next
MsgBox "Fertig."
End Sub
Ziel wären drei zusätzliche Sheets "Januar", "Februar", "März". Im Januar-Sheet sollen die Formelelemente "Vorlage_" ersetzt sein mit "Apfel_". Im Februar-Sheet "Vorlage_" mit "Birne_" usw.
Besten Dank für hilfreiche Tipps.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Neue Tabellenblätter auf Basis Liste
30.01.2019 07:03:24
Nepumuk
Hallo,
teste mal:
Sub NeueBlaetterErzeugen()
    Dim NeueTabelle As Range
    For Each NeueTabelle In Worksheets("Administration").Range("tb_Administration[Monat]").Value
        Sheets("Vorlage").Copy After:=Sheets(Sheets.Count)
        With Sheets(Sheets.Count)
            .Name = NeueTabelle.Value
            .Cells.Replace What:="Vorlage_", Replacement:= _
                NeueTabelle.Offset(0, 1).Value, LookAt:=xlPart
        End With
    Next
    MsgBox "Fertig."
End Sub

Gruß
Nepumuk
Anzeige
AW: Neue Tabellenblätter auf Basis Liste
30.01.2019 13:42:47
Dubach
Hallo Nepumuk
Leider generiert dein Skript einen Laufzeitfehler 424 "Objekt erforderlich". Ich habe anschliessend mehr per "Trial and Error" meine tb_Administration geändert - aber ohne Erfolg. z.B. habe ich die Spalte "Default" gelöscht. Eigentlich wollte ich das Ganze aber dynamisch halten.
Mein Hauptproblem ist der VBA-Code für das Generieren eines Array der tb_Administration. 1. Spalte = Name für das neue Tabellenblatt, 2. Spalte = Suchtext, 3. Spalte = NeuerText. Das Array soll nachher Zeile für Zeile durchlaufen und pro Zeile ein neues Tabellenblatt generieren. Der Name für das neue Blatt ist der Text in der 1. Spalte. Beim Generieren des neuen Blattes soll die Vorlage auf den Suchtext (= 2. Spalte) geprüft und dieser durch NeuerText (=3. Spalte) ersetzt werden.
Vielleicht habe ich zuvor die Aufgabenstellung zu wenig klar formuliert. Hättest du nochmals einen Input? Danke dir bestens im voraus.
Anzeige
AW: Neue Tabellenblätter auf Basis Liste
01.02.2019 22:09:52
Dubach
Hallo
habe inzwischen folgende funktionierende Lösung gefunden:
Sub BlattErzeugen()
Dim myArray() As Variant
myArray() = Worksheets("Administration").Range("tb_Administration").Value
For I = LBound(myArray) To UBound(myArray)
Sheets("Vorlage").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = myArray(I, 1)
Cells.Select
Cells.Replace What:=myArray(I, 2), Replacement:=myArray(I, 3)
Next I
MsgBox "Blätter sind erzeugt und die Texte ersetzt!"
End Sub

Einen schönen Abend noch und danke für deinen Input.
mit Gruss

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige