Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1484to1488
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 erstellen nach Templete

Neue Tabellenblätter erstellen nach Templete
13.04.2016 12:30:23
Jörg
Hallo liebes Excelforum,
ich benötige einmal eure Hilfe im Bereich VBA, den ich hab davon leider überhaupt keine Ahnung.
Also ich benötige ein Makro welches mir neue Tabellenblätter nach einem bestimmten Template anlegt und mir dieses dann auch schon mit ein paar Werten aus dem Blatt "Übersicht" und "Kosten" befüllt. Ich habe dazu auch einmal ein Muster erstellt um es besser zu verdeutlichen was ich meine.
https://www.herber.de/bbs/user/104929.xlsm
Allerdings steht das Finale Design für das Template noch nicht fest, von daher wäre es schön wenn ich relativ einfach im Makro sehen könnte was ich anpassen müßte wenn sich die Felder verschieben.
Vielen Dank schon einmal für eure Hilfe.
Gruß Jörg

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

Betreff
Datum
Anwender
Anzeige
AW: Neue Tabellenblätter erstellen nach Templete
15.04.2016 11:21:37
ChrisL
Hi Jörg
Siehe Anhang:
https://www.herber.de/bbs/user/104986.xlsm
Habe alles mit Formeln gelöst und im Blatt Template gespeichert. So muss das Makro nur noch das Blatt Template kopieren und neu benennen (vorausgesetzt das Blatt existiert nicht bereits).
Sub Mach()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim iZeile As Long
Set WS1 = Worksheets("Übersicht")
Set WS2 = Worksheets("Template")
For iZeile = 6 To WS1.Cells(WS1.Rows.Count, 1).End(xlUp).Row
If Not BlattExists(WS1.Cells(iZeile, 1)) Then
WS2.Copy After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = WS1.Cells(iZeile, 1)
End If
Next iZeile
End Sub

Private Function BlattExists(sBlattname As String) As Boolean
Dim i As Integer
For i = 1 To Worksheets.Count
If Worksheets(i).Name = sBlattname Then
BlattExists = True
Exit Function
End If
Next i
End Function

cu
Chris

Anzeige
AW: Neue Tabellenblätter erstellen nach Templete
15.04.2016 13:06:03
Jörg
Hallo Chris,
vielen Dank für deine Hilfe, es funktioniert wunderbar.
Gruß Jörg

AW: Neue Tabellenblätter erstellen nach Templete
19.04.2016 15:21:42
Jörg
Hallo Chris,
ich hatte jetzt Zeit mir deine Tabelle etwas genauer anzuschauen.
Dabei sind mit folgende Punkte aufgefallen die etwas ungünstig sind:
1. Leider übernimmt er die Daten aus dem Tabellenblatt "Kosten" nicht richtig. Ich hatte gehofft das man das so programmieren kann das nur das Datum und der dazugehörigen Betrag in das jeweilige Tabellenblatt übernommen wird.
2. Auf dem Tabellenblatt "Übersicht" hast du die Spalten I und J mit einer Formel belegt die nur sichtbar ist wenn Spalte A befüllt ist. Wie kann ich den die Formel ändern wenn sich im Template das Feld ändert?
Ich hoffe du kannst mir nochmal weiterhelfen.
Gruß Jörg

Anzeige
AW: Neue Tabellenblätter erstellen nach Templete
19.04.2016 16:16:49
ChrisL
Hi Jörg
Im Template B8 steht:
=SUMME(B15:B19)
dies müsste natürlich wie folgt lauten:
=SUMME(B15:B26)
Auf der Übersicht Spalte H und I steht:
=INDIREKT("'"&A6&"'!$B$8")
und
=INDIREKT("'"&A6&"'!$B$9")
A6 ist der Blattname. B8 bzw. B9 die Zelle. Also einfach B8/B9 anpassen.
Grundvoraussetzung ist, dass du das Template einmal definierst und dann immer mit der gleichen Struktur arbeitest. Wenn du z.B. 10 Blätter machst mit einem Aufbau und dann 10 Blätter mit einem anderen Aufbau, dann wird dies verständlicherweise nichts.
cu
Chris

Anzeige
AW: Neue Tabellenblätter erstellen nach Templete
19.04.2016 16:45:16
Jörg
Hallo Chris,
ich glaube jetzt haben wir uns missverstanden.
Mit dem ersten Punkt meinte ich das wenn wie im 1. Beispiel nur bei jedem 2. Datum ein Betrag steht, dann soll er auch nur jedes zweite Datum (und den dazugehörigen Betrag) in das jeweilige Tabellenblatt übernehmen (ohne dabei Leerzeilen zu hinterlassen).
Ich hatte schon einmal ein wenig rumprobiert und hab das für das Datum mit folgender Matrixformel gelöst, allerdings weiß ich nicht wie ich die Formel umbaue damit es für das Template passt.
{=WENN(ZEILE(Kosten!B2)>ANZAHL2(Kosten!$B$2:$B$204);"";INDEX(Kosten!A:A;
KKLEINSTE(WENN(Kosten!B$2:B$1004"";ZEILE(Kosten!$2:$1000));ZEILE(Kosten!A2))))}
Ich hoffe du kannst mir noch folgen :-)
Und mit dem zweiten Punkte meinte ich das ich die Formeln ja erst sehe wenn ich die Spalte A befülle. Also kann ich die Formel ja erst hinterher ändern. Ich würde Sie aber gern schon im voraus anpassen.
Gruß Jörg

Anzeige
AW: Neue Tabellenblätter erstellen nach Templete
19.04.2016 17:04:59
Jörg
Ach Mist, jetzt habe ich wieder das Häckchen für den offenen Teil vergessen :-(
Von daher jetzt das ganze nochmal mit Häckchen ;-):
Hallo Chris,
ich glaube jetzt haben wir uns missverstanden.
Mit dem ersten Punkt meinte ich das wenn wie im 1. Beispiel nur bei jedem 2. Datum ein Betrag steht, dann soll er auch nur jedes zweite Datum (und den dazugehörigen Betrag) in das jeweilige Tabellenblatt übernehmen (ohne dabei Leerzeilen zu hinterlassen).
Ich hatte schon einmal ein wenig rumprobiert und hab das für das Datum mit folgender Matrixformel gelöst, allerdings weiß ich nicht wie ich die Formel umbaue damit es für das Template passt.
{=WENN(ZEILE(Kosten!B2)>ANZAHL2(Kosten!$B$2:$B$204);"";INDEX(Kosten!A:A;
KKLEINSTE(WENN(Kosten!B$2:B$1004"";ZEILE(Kosten!$2:$1000));ZEILE(Kosten!A2))))}

Ich hoffe du kannst mir noch folgen :-)
Und mit dem zweiten Punkte meinte ich das ich die Formeln ja erst sehe wenn ich die Spalte A befülle. Also kann ich die Formel ja erst hinterher ändern. Ich würde Sie aber gern schon im voraus anpassen.
Gruß Jörg

Anzeige
AW: Neue Tabellenblätter erstellen nach Templete
19.04.2016 18:19:34
ChrisL
Hi Jörg
OK Punkt 1 sehe ich. Wie wärs ich setzte dir beim Kopieren noch einen Filter, der alle Null-Werte ausblendet?
Punkt 2 verstehe ich noch nicht ganz. Falls du meinst, dass wenn noch gar keine Blätter generiert wurden, auch keine Formel da steht. Dann schreib halt schonmal rein
=WENN(A6="";"";INDIREKT("'"&A6&"'!$B$8"))
und zieh die Formel vorsorglich ein paar Zeilen runter.
cu
Chris

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige