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

Syntax Schleife durch Blätter minus 3 letzten

Syntax Schleife durch Blätter minus 3 letzten
Jörg-HH
Guten Abend zusammen,
mit For Each ws In ThisWorkbook.Worksheets durchlaufe ich alle Blätter der Datei. Wie muß ich die Zeile ändern, damit die letzten 3 Blätter nicht erfaßt werden? (Alle Blätter haben unterschiedliche Namen, man kann also keine Indizes abgrasen)
Danke schon mal und Grüße - Jörg
AW: Syntax Schleife durch Blätter minus 3 letzten
29.10.2009 21:49:04
Oberschlumpf
Hi Jörg
Hilft das hier?
For Each ws In ThisWorkbook.Worksheets.Count - 3
Ciao
Thorsten
AW: Syntax Schleife durch Blätter minus 3 letzten
29.10.2009 21:51:44
Oberschlumpf
oder
For Each ws In ThisWorkbook.Sheets.Count - 3

weder / noch...
29.10.2009 22:26:38
Jörg-HH
Hi Thorsten
in beiden Fälle krieg ich die rote Karte und die Meldung "erwartet Anweisungsende"
wat nu...?
Grüße - Jörg
AW: Syntax Schleife durch Blätter minus 3 letzten
29.10.2009 23:07:00
Klaus-Dieter
Hallo Jörg,
so etwa:
For Each ws In ThisWorkbook.Sheets.Count - 3
' mach was
Next ws
Viele Grüße Klaus-Dieter

Online-Excel
Anzeige
AW: Syntax Schleife durch Blätter minus 3 letzten
29.10.2009 23:34:35
Josef
Hallo Jörg,

For Each ws In ThisWorkbook.Worksheets
  If ws.Index < ThisWorkbook.Worksheets.Count - 3 Then
    '...
  Next
Next

Gruß Sepp

Anzeige
ein Enf-If sollte auch noch rein;-(( o.T.
29.10.2009 23:40:46
Josef
Gruß Sepp

Sepps Zeile läuft. Warum die anderen rot?
30.10.2009 14:17:35
Jörg-HH
Hallo Jungs
erstmal danke und sorry, daß ich gestern nicht mehr am Ball war - nach meinem letzten Post fiel ich versehentlich in Tiefschlaf und ward nicht mehr gesehen...
Alle Vorschläge ergeben eine rote Schrift, bis auf den von Sepp. Der läuft wie beabsichtigt.
Nun würde mich natürlich brennend interessieren, warum die anderen Vorschläge mit rot quittiert werden - so hatte ich das ursprünglich auch geschrieben. Nur mit rot kommt man ja nicht weit... Falls es jmd interesseirt, hier der Code drumherum - jetzt mit Sepps Vorschlag:
Public Sub CmdBt_int_FormularKopieren()
Dim intMeld As String
intMeld = "Kein Button für das Tagesgeschäft!" & vbLf & "Nur für Testzwecke vorgesehen." & vbLf  _
& vbLf & _
"Die Einstellungen des Formular-Blatts werden" & vbLf & _
"in ALLE Lieferantenblätter kopiert. Dort evtl." & vbLf & _
"vorhandene Eintragungen werden überschrieben." & vbLf & vbLf & _
"Bei diesem Vorgang werden keine Schaltflächen kopiert."
If MsgBox(intMeld, vbOKCancel) = vbCancel Then
Exit Sub
End If
Dim ws As Worksheet
Dim wsFormular As Worksheet
Dim bHinterFormular As Boolean
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
bHinterFormular = False
Set wsFormular = ThisWorkbook.Worksheets("Formular")
For Each ws In ThisWorkbook.Worksheets
If ws.Index  "config" _
And ws.Name  "ToDo" _
And ws.Name  "Formular" _
And bHinterFormular = True Then
ws.Cells.Clear                  'Inhalt im erreichten Blatt leeren und markieren
wsFormular.Cells.Copy           'Inhalt im Blatt "Formular" kopieren
ws.Range("A1").PasteSpecial Paste:=xlPasteAll 'Inhalt in aktuelles Blatt der FOR- _
Schleife einfügen
ws.Activate
ws.Range("A1").Select           'aktive Zelle auf A1 stellen
End If                              'wenn die FOR-Schleife das Blatt Formular abgearbeitet  _
hat,
'dann liegen die "nächsten Blätter" hinter diesem...
If ws.Name = "Formular" Then
bHinterFormular = True
End If
End If
Next ws
Application.CutCopyMode = False
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
wsFormular.Activate                     'wieder das Formularblatt aktivieren...
wsFormular.Range("$A$1").Select        'im Formular zu Zelle A1 springen
MsgBox "Kopieren fertig"
End Sub

Grüße - Jörg
Anzeige
AW: Sepps Zeile läuft. Warum die anderen rot?
30.10.2009 18:37:11
Josef
Hallo Jörg,
"ws" ist ein Worksheet-Objekt, "ThisWorkbook.Worksheets" ist eine Collection, "ThisWorkbook.Worksheets.Count" gibt die Anzahl der Tabellenblätter in der Mappe zurück.
Mit "For Each ws In ThisWorkbook.Worksheets.Count" versuchst du, mit einem Objekt auf die Tabellenanzahl zuzugreifen und das kann nicht funktionieren.
Mit "For Each ws in ThisWorkbook.Worksheets" funktioniert es, weil du mit einem Worksheet-Objekt auf
eine Collection aus Worksheet-Objekten zugreifst. Dann fragt man halt mit ".Index" und "< ...Count - 3" ab, ob die Bedingung erfüllt ist.
Gruß Sepp

Anzeige
Verstanden...!
30.10.2009 18:59:02
Jörg-HH
Hallo Sepp
wunderbar verständlich erklärt! Danke!
Schönes WE
Jörg

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige