Herbers Excel-Forum - das Archiv

For Each ...

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: For Each ...
von: Ron Andres
Geschrieben am: 07.11.2003 09:39:33
Hallo,

ich möchte mit ner For Each Schleife alle Blätter (Tabellen und Diagramme) in einem Workbook durchtigern und unerwünschte Tabellen löschen. Ungefähr so

for each x in ActiveWorkbook
....
next x

Welchen Datenwyp muß mein X haben. Es funktioniert nicht mit Worksheets (wegen der Diagramme)..

Gruß Ron Andres

Bild

Betrifft: AW: For Each ...
von: Galenzo
Geschrieben am: 07.11.2003 09:54:58
Hallo,
mit Sheets anstelle von WorkSheets erwischt du auch die Diagrammblätter.
mfg
Bild

Betrifft: AW: For Each ...
von: Ron Andres
Geschrieben am: 07.11.2003 09:56:29
Daran hatte ich auch schon gedacht. Aber Scheets ist die Auflistung aller Blätter. Geht leider nicht...

Gruß Ron Andres
Bild

Betrifft: AW: For Each ...
von: Galenzo
Geschrieben am: 07.11.2003 10:04:07
Warum nicht?
Bei mir geht das so:



Private Sub CommandButton1_Click()
Dim As Object
    For Each In Sheets
        MsgBox s.Name
    Next
End Sub

Bild

Betrifft: AW: For Each ...
von: Yal
Geschrieben am: 07.11.2003 10:07:20
Probier etwas so ähnliches:



Sub test()
Dim x
For Each x In ThisWorkbook.Sheets
Debug.Print x.Name & x.Type
If x.Type = -4167 Then Debug.Print vbTab & "'ist sogar eine Tabelle!"
Next x
End Sub



gruß
Yal
Bild

Betrifft: AW: For Each ...
von: Michael Brueggemann
Geschrieben am: 07.11.2003 10:04:48
Hallo Ron,

so sollte es gehen:

Option Explicit



Sub test()
Dim i As Integer
With ThisWorkbook
For i = 1 To .Sheets.Count
' Hier kommt Deine Funktionalitaet
MsgBox .Sheets(i).Name
Next i
End With
End Sub



CIAO
Michael
Bild

Betrifft: AW: For Each ...
von: Ron Andres
Geschrieben am: 07.11.2003 10:07:38
Ja, das geht. Danke.

Aber trotzdem: Gibt es nicht sowas wie for each WokbookItem...
Bild

Betrifft: AW: For Each ...
von: Michael Brueggemann
Geschrieben am: 07.11.2003 12:56:04
Hallo Ron,

es geht natuerlich so. Grundsaetzlich handelt es sich bei "Sheets" moeglicherweise um Objekte von unterschiedlicher Art (Type = xlWorksheet / Type = 3 (=Diagramm))



Sub test()
Dim sht As Object
For Each sht In ThisWorkbook.Sheets
MsgBox sht.Name & " : " & sht.Type
Next sht
End Sub



CIAO
Michael
Bild