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

Tabellenblätter nach Liste erstellen

Tabellenblätter nach Liste erstellen
25.09.2019 15:32:14
Ansgar
Hallo Zusammen,
ich erstelle eine Liste aus Namen auf ein Tabellenblatt "Übersicht". Aus dieser Liste wird wiederum eine Datenliste im Tabellenblatt "Daten" erstellt. Es gibt ein Tabellenblatt mit dem Namen "Vorlage".
Auf Knopfdruck wird nun das Tabellenblatt "Vorlage" sooft kopiert wie es Namen in der Liste gibt und auch gleich mit den Namen versehen.
Nun zu meinem Problem:
Nachdem ich einmal die Tabellenblätter nach der Liste erstellt habe, kann ich nach hinzufügen eines neuen namens diese Funktion nicht mehr nutzen. Es kommt logischerweise eine Fehlermeldung.
Hier mein Code: (Funktioniert soweit ganz gut)

Sub Vorlage_kopieren()
Dim rngZelle    As Range, _
rngZelle2   As Range, _
rngBereich  As Range, _
rngBereich2  As Range, _
wb          As Workbook, _
iIndex      As Integer
Set wb = ThisWorkbook
Set rngBereich = wb.Sheets("Daten").Range("H5:H60")
Set rngBereich2 = wb.Sheets("Daten").Range("I5:I60")
iIndex = wb.Sheets("Vorlage").Index
For Each rngZelle In rngBereich
If rngZelle  "" Then
wb.Sheets("Vorlage").Copy After:=wb.Sheets(iIndex)
iIndex = iIndex + 1
ActiveSheet.Name = rngZelle.Value
End If
Next rngZelle
MsgBox "Hast Du schön gemacht"
Worksheets("Übersicht").Activate
End Sub

hat einer eine Idee?

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter nach Liste erstellen
25.09.2019 16:14:29
UweD
Hallo
ungetestet...
Sub Vorlage_kopieren()
Dim rngZelle    As Range, _
rngZelle2   As Range, _
rngBereich  As Range, _
rngBereich2  As Range, _
wb          As Workbook, _
iIndex      As Integer
Set wb = ThisWorkbook
Set rngBereich = wb.Sheets("Daten").Range("H5:H60")
Set rngBereich2 = wb.Sheets("Daten").Range("I5:I60")
iIndex = wb.Sheets("Vorlage").Index
For Each rngZelle In rngBereich
If rngZelle  "" Then
'prüfen ob Blatt schon existiert
If IsError(Evaluate(rngZelle & "!A1")) Then
MsgBox "Blatt '" & rngZelle & "' existiert schon"
Exit sub
End If
wb.Sheets("Vorlage").Copy After:=wb.Sheets(iIndex)
iIndex = iIndex + 1
ActiveSheet.Name = rngZelle.Value
End If
Next rngZelle
MsgBox "Hast Du schön gemacht"
Worksheets("Übersicht").Activate
End Sub

LG UweD
Anzeige
AW: Tabellenblätter nach Liste erstellen
25.09.2019 16:44:40
Ansgar
Hallo UweD
Danke für die schnelle Reaktion. Leider funktioniert der Code nicht. Es wird sofort die Fehlermeldung Batt "" Existiert schon ausgegeben. Bevor auch nur 1 Tabellenblatt erstellt wurde.
Ich sehe auch gerade, dass ich ein paar Zeilen noch nicht gelöscht hat. rngZelle2 und rngBereich2
Kommt aber keine Fehlermeldung, darum stehen die noch im Code.
AW: Tabellenblätter nach Liste erstellen
25.09.2019 21:27:26
UweD
Lad mal Musterseiten hoch
AW: Tabellenblätter nach Liste erstellen
26.09.2019 08:33:45
UweD
Hallo nochmal
Was 3 Buchstaben ausmachen...
Ich habe das Not vergessen.
Die Zeile muss so heißen.
              If  Not  IsError(Evaluate(rngZelle & "!A1")) Then
LG UweD
Anzeige
AW: Tabellenblätter nach Liste erstellen
25.09.2019 17:24:00
Dieter
Hallo Ansgar,
ich schlage das folgende Vorgehen vor:

Sub Vorlage_kopieren()
Dim rngZelle    As Range
Dim rngZelle2   As Range
Dim rngBereich  As Range
Dim rngBereich2 As Range
Dim wb          As Workbook
Set wb = ThisWorkbook
Set rngBereich = wb.Sheets("Daten").Range("H5:H60")
Set rngBereich2 = wb.Sheets("Daten").Range("I5:I60")
For Each rngZelle In rngBereich.Cells
If rngZelle  "" Then
' prüfen, ob Blatt schon existiert
If Not BlattExistiert(rngZelle.Value) Then
wb.Sheets("Vorlage").Copy After:=wb.Sheets(wb.Sheets.Count)
ActiveSheet.Name = rngZelle.Value
End If
End If
Next rngZelle
MsgBox "Hast Du schön gemacht"
wb.Worksheets("Übersicht").Activate
End Sub
Function BlattExistiert(BlattName As String) As Boolean
Dim sh As Object
For Each sh In ThisWorkbook.Sheets
If UCase$(BlattName) = UCase$(sh.Name) Then
BlattExistiert = True
Exit Function
End If
Next sh
End Function

Wenn du deine Liste im Zellbereich Daten!H5:H60 verlängerst, dann werden bei dieser Version die neuen Blätter hinten angefügt. Bei der ursprünglichen Version erscheinen sie direkt hinter dem Blatt "Vorlage".
Viele Grüße
Dieter
Anzeige
AW: Tabellenblätter nach Liste erstellen
26.09.2019 07:28:24
Ansgar
Hallo Dieter,
das funktioniert super. Danke
Danke auch an UweD

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige