Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1572to1576
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

Blätter automatisch einfügen

Blätter automatisch einfügen
08.08.2017 15:17:29
Berndt
Hallo zusammen,
ich habe mal eine etwas kniffligere Frage an euch.
Seit einiger Zeit führen wir ein Makro, welches in der Lage ist, die jeweiligen Tagesaufgaben der Kollegen zu erfassen und kompakt in einem sog. "Dashboard" darzustellen.
Es wurde jedoch genau für eine bestimmte Anzahl an Kollegen erstellt.
D.h. jeder hatte sein eigenes Tabellenblatt, in dem er unter anderen Aufgaben und Zeiten aufschreiben konnte.
Frage:
Ist es möglich, über Tabellenname "Mitarbeiterblätter" im Tabellenreiter "Eingabemaske" (siehe Bsp.-Datei), zusätzliche Mitarbeiter individuell hinzuzufügen? Z.b. neue Kollegen
Das heißt ein mögliches Makro solle Prüfen, welche Blätter schon vorhanden sind (in dem Falle Herr Prager und Hr. Scholz) und solle dann die Tabellenblätter welche noch fehlen inkl. Buttons und Makros anlegen.
Der Mitarbeit hat nun sein eigenes Tabellenblatt.
Für einen weiteren Mitarbeiter (Riehl), habe ich mal so eine Vorlage in der Bsp.-Datei schon angelegt.
Vll. kann mir jmd. behilflich sein. Kann schlecht einschätzen, was da für ein Aufwand dahinter steckt.
Danke im voraus.
Datei:
https://www.herber.de/bbs/user/115342.xlsm
LG Berndt

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

Betreff
Datum
Anwender
Anzeige
AW: Blätter automatisch einfügen
08.08.2017 15:55:03
Michael
Hallo Berndt!
Die Mitarbeiterblätter nach Liste im Blatt "Eingabemaske" anlegen zu lassen ist eigentlich keine Hexerei. Gut wäre dafür aber, dass Du Dir ein Mitarbeiterblatt als Vorlage in der Mappe belässt (kannst Du ja auch ausblenden); dann kann die Mitarbeiternamensliste problemlos durchlaufen werden, vorhandene Blattnamen werden übersprungen, und nicht vorhandene Blattnamen werden angelegt, indem die Vorlage kopiert wird und mit dem Listennamen benannt wird.
Aber dazu müsstest Du die verwendeten (Bereichs-)Namen in der Mappe überarbeiten - denn beim Kopieren eines Blattes werden auch alle Blatt-Makros übernommen, aber ggf. auch Bereichsnamen; das kann in der derzeitigen Form zu Problemen führen, oder Du setzt dann auch die (Bereichs-)Namen per Makro.
Das Durchlaufen der Namensliste und ggf. erzeugen eines neuen Mitarbeiterblattes aus einem Vorlagenblatt geht schematisch dann so:
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim WsQ As Worksheet: Set WsQ = Wb.Worksheets("Eingabemaske")
Dim WsZ As Worksheet: Set WsZ = Wb.Worksheets("Vorlage")
Dim Ws As Worksheet, Namen, Tabs As Object, i&
Set Tabs = CreateObject("Scripting.Dictionary")
For Each Ws In Wb.Worksheets
If Not Tabs.exists(Ws.Name) Then Tabs.Add Ws.Name, ""
Next Ws
With WsQ
Namen = .Range("H12:H" & .Cells(.Rows.Count, "H").End(xlUp).Row)
For i = LBound(Namen) To UBound(Namen)
If Not Tabs.exists(Namen(i, 1)) Then
With WsZ
.Copy after:=Wb.Worksheets(Wb.Worksheets.Count)
.Name = Namen(i, 1)
.Range("B6") = "Guten Tag " & Ws.Name
End If
Next i
End With
Set Wb = Nothing: Set WsQ = Nothing: Set Ws = Nothing
Erase Namen: Set Tabs = Nothing
End Sub
Durch Deinen Namensmanager hab ich mich jetzt nicht durchgekämpft...
LG
Michael
Anzeige
AW: Blätter automatisch einfügen
09.08.2017 08:07:18
Berndt
Vielen Dank für deine Antwort.
Ich habe jetzt mal ein Vorlagenblatt eingefügt und den Namensmanager bereinigt.
Dein Makro scheint auch ganz gut zu funktionieren.
Allerdings habe ich eine Frage bzgl. der Textpassage
With WsZ
.Copy after:=Wb.Worksheets(Wb.Worksheets.Count)
.Name = Namen(i, 1)
Da kopiert er mir zunächst die Vorlage und benennt das neue Tabellenblatt Vorlage(2).
Dann benennt er die Vorlage um und nicht wie gewünscht die Vorlage(2).
Kannst du die das mal anschauen indem der Button bei Eingabehilfe betätigt wird.
Komisch.
https://www.herber.de/bbs/user/115350.xlsm
VG Berndt
Anzeige
AW: Blätter automatisch einfügen
09.08.2017 08:24:34
Werner
Hallo Berndt,
versuch mal:
ActiveWorksheet.Name = Namen(i, 1)
Gruß Werner
AW: Blätter automatisch einfügen
09.08.2017 08:49:38
Berndt
Funktioniert leider nicht beim ersten probieren
Ja, sorry, ich war unkonzentriert...
09.08.2017 11:26:50
Michael
Berndt,
...aber so sollte es passen:
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim WsQ As Worksheet: Set WsQ = Wb.Worksheets("Eingabemaske")
Dim WsV As Worksheet: Set WsZ = Wb.Worksheets("Vorlage")
Dim Ws As Worksheet, WsZ As Worksheet
Dim Namen, Tabs As Object, i&
Set Tabs = CreateObject("Scripting.Dictionary")
For Each Ws In Wb.Worksheets
If Not Tabs.exists(Ws.Name) Then Tabs.Add Ws.Name, ""
Next Ws
With WsQ
Namen = .Range("H12:H" & .Cells(.Rows.Count, "H").End(xlUp).Row)
For i = LBound(Namen) To UBound(Namen)
If Not Tabs.exists(Namen(i, 1)) Then
WsV.Copy after:=Wb.Worksheets(Wb.Worksheets.Count)
Set WsZ = ActiveSheet
WsZ.Name = Namen(i, 1)
WsZ.Range("B6") = "Guten Tag " & WsZ.Name
End If
Next i
End With
Set Wb = Nothing: Set WsQ = Nothing: Set Ws = Nothing: Set WsZ = Nothing
Erase Namen: Set Tabs = Nothing
End Sub
Das Problem war, dass ich den Code zuerst so geschrieben habe, dass ein bestehendes Blatt "also Vorlage" kopiert wird, und dann aber doch schematisch auf ein Vorlagen-Blatt angepasst hab; aber natürlich nicht mehr entsprechend adaptiert.
LG
Michael
Anzeige
vielen Dank
10.08.2017 07:48:47
Berndt
Vielen Dank. Mir wurde echt geholfen. Es funktioniert nämlich wie gedacht
Gerne, Danke für die Rückmeldung, owT
10.08.2017 10:01:34
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige