Live-Forum - Die aktuellen Beiträge
Anzeige
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
03.12.2008 14:26:37
Hannes
Moin Moin,
ich möchte gerne nochmal meine frage von gestern auffrischen...
erst mal besten dank an Rudi...BESTEN DANK
die programmierung läuft fast richtig.
nur bei aktivierung haut ein LAUFZEITFEHLER 1004 dazwischen. wenn man dan beenden bzw debuggen drückt werden wie gewüsch alle tabellenblätter mit zugehörigen namen erstellt! + ein Tabellenblatt "Vorlage (2)"...was da eigentlich nicht hingehört.
der fehler erfolgt hier:
.Name = c.Value
hat jemand ne idee diesen fehler zu beheben?
hier nochmal die ganze programmierung:

Sub Sheets_aus_Liste()
Dim c As Range, rngNum As Range
Application.ScreenUpdating = False
With Sheets("Maschinendaten")
Set rngNum = .Range(.Cells(4, 1), .Cells(4, 1).End(xlDown))
End With
For Each c In rngNum
If Not SheetExists(c.Value) Then
Worksheets("Vorlage").Copy after:=Worksheets(Worksheets.Count)
With ActiveSheet
.Range("S6") = c.Value
.Name = c.Value
End With
End If
Next
Application.ScreenUpdating = True
End Sub



Function SheetExists(strSheetName As String) As Boolean
Dim wks As Worksheet
For Each wks In Sheets
SheetExists = SheetExists Or wks.Name = strSheetName
Next
End Function


Besten Dank schonmal

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter nach Liste erstellen
03.12.2008 14:35:00
Andi
Hi,
der Fehler dürfte dann auftreten, wenn sich in dem Bereich, aus dem Du die Namen für die neu erstellten Blätter holst, eine leere Zelle befindet; dann wird noch die Kopie von Blatt Vorlage erstellt, die dann Vorlage (2) heißt, aber das umbenennen dieser Kopie funktioniert nicht, weil der aktuellen Zelle kein Wert steht, c.Value also ein leerer String ist.
Schönen Gruß,
Andi
AW: Tabellenblätter nach Liste erstellen
03.12.2008 14:43:08
Hannes
Danke Andi,
gibt es eine möglichkeit dieses zu umgehen?
oder viel mehr die möglichkeit die fehlermeldung automatisch wegzuschalten?
also zu sagen: wenn Laufzeitfehler dann die taste beenden clicken...
so das zwar "Vorlage (2)" erstellt wird aber die fehlermeldung nicht mehr kommt.
geht das irgendwie? kann man das der programmierung anhängen?
ich kein plan...
danke schonmal für jede antwort
Hannes
Anzeige
AW: Tabellenblätter nach Liste erstellen
03.12.2008 14:48:24
Andi
Hi,
Fehlermeldungen einfach per on error Anweisung zu übergehen ist nie ratsam; dadurch kannst Du ganz schnell die Kontrolle darüber verlieren, was Dein Programm eigentlich tut...
Die einfachste Lösung für Dein Problem (vorausgesetzt, meine Vermutung zu dessen Ursache stimmt) dürfte so aussehen:

Sub Sheets_aus_Liste()
Dim c As Range, rngNum As Range
Application.ScreenUpdating = False
With Sheets("Maschinendaten")
Set rngNum = .Range(.Cells(4, 1), .Cells(4, 1).End(xlDown))
End With
For Each c In rngNum
If c.Value  "" Then
If Not SheetExists(c.Value) Then
Worksheets("Vorlage").Copy after:=Worksheets(Worksheets.Count)
With ActiveSheet
.Range("S6") = c.Value
.Name = c.Value
End With
End If
End If
Next
Application.ScreenUpdating = True
End Sub



Function SheetExists(strSheetName As String) As Boolean
Dim wks As Worksheet
For Each wks In Sheets
SheetExists = SheetExists Or wks.Name = strSheetName
Next
End Function


Schönen Gruß,
Andi

Anzeige
AW: Tabellenblätter nach Liste erstellen
03.12.2008 15:05:00
Hannes
100%ige Antwort
Danke Andi
der Hannes
gern geschehen... (ot)
03.12.2008 15:13:30
Andi
.

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige