![]() |
Betrifft: For Each Schlife - Typen Unverträglich
von: Rik
Geschrieben am: 29.09.2014 11:14:08
Hallo,
bei folgender Schleife kommt, nachdem sie einmal komplett durchgelaufen ist "Typen unverträglich"
For Each ws In ActiveWorkbook.Sheets If ws.name <> "Tab1" And _ ws.name <> "Tab2" Then Debug.Print ws.name & " wurde gelöscht!!" Application.DisplayAlerts = False Sheets(ws.name).Delete Application.DisplayAlerts = True End If Next wsDas funktioniert auch alles soweit, es werden alle Tabellen gelöscht bis auf die zwei Ausnahmen und einem Diagramm.
![]() ![]() |
Betrifft: For Each ws In ActiveWorkbook.WORKsheets
von: {Boris}
Geschrieben am: 29.09.2014 11:22:36
VG; Boris
![]() ![]() |
Betrifft: AW: For Each ws In ActiveWorkbook.WORKsheets
von: Rik
Geschrieben am: 29.09.2014 11:27:41
Sollte da was stehen?
![]() ![]() |
Betrifft: Ja, da steht WORKSheets nicht Sheets !
von: Matthias L
Geschrieben am: 29.09.2014 11:32:47
Hallo
WorkSheets statt Sheets
siehe Text im Betreff
Gruß Matthias
![]() ![]() |
Betrifft: AW: Ja, da steht WORKSheets nicht Sheets !
von: Rik
Geschrieben am: 29.09.2014 11:35:58
Oh, danke. Ich hab nicht in den Betreff geschaut, ob der sich geändert hat, habe vergeblich nach Text gesucht ;)
Jetzt funktioniert es auch, danke. Warum es dann bei dem Anderen Sub funktioniert ist mir natürlich schleierhaft.
Danke und vg
Rik
![]() ![]() |
Betrifft: AW: Ja, da steht WORKSheets nicht Sheets !
von: fcs
Geschrieben am: 29.09.2014 11:53:06
Hallo Rik,
das Problem wird die Deklaration der Variablen sein.
Wenn die Variable ws als Worksheet deklariert ist, dann funktioniert
For Each ws In ActiveWorkbook.Sheets
nicht in Arbeitsmappen mit Diagrammblättern, da Diagramm-Blätter nicht den Typ Worksheet haben.
Gibt es in einer Arbeitsmapppe nur Tabellenblätter, dann taucht das Typ-Problem nicht auf.
Wenn du sowohl Tabellenblätter als auch Diagrammblätter (also die Sheets) einer Arbeitsmappe in einer Schleife verarbeiten willst, dann muss die entsprechende Laufvariable als Object oder Variant deklariert sein.
Gruß
Franz
![]() ![]() |
Betrifft: AW: Ja, da steht WORKSheets nicht Sheets !
von: {Boris}
Geschrieben am: 29.09.2014 11:53:23
Hi,
die Sheets-Auflistung enthält ALLE Sheets - sowohl Worksheets als auch Diagramm-Sheets etc.
Wenn Du also eine Routine rund um WORKsheets schreibst, dann solltest Du auch nur die WORKsheets ansprechen.
VG, Boris
![]() ![]() |
Betrifft: AW: Ja, da steht WORKSheets nicht Sheets !
von: Rik
Geschrieben am: 29.09.2014 12:00:51
Hallo,
das Problem war ein Anderes.
Ich durchlaufe ganz am Anfang schon einmal die Funktion und vor der von mir hier angegebenen Schleife wird nach Diagrammblättern gesucht und diese werden gelöscht. Das sieht so aus:
For Each d In ActiveWorkbook.Charts Application.DisplayAlerts = False d.Delete Application.DisplayAlerts = True Next
ActiveWorkbook.Chartsstand, stande dort
aus diesem Grund wurde das Diagramm logischerweise nicht gelöscht.
ThisWorkbook.Charts
![]() |