Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schleifendurchläufe zählen

Forumthread: Schleifendurchläufe zählen

Schleifendurchläufe zählen
02.02.2003 21:00:49
Steffen
Hallo und guten Abend,

ich habe heute nochmals ne Frage:

Kann ich vor dem starten einer bestimmten Schleife feststellen wieviele Aktionen ausgeführt werden z.b.: für Schleife:

Dim wkb As Workbook
Dim wks As Worksheet
For Each wkb In Workbooks
For Each wks In wkb.Worksheets
wks.Protect Password:="lextoy", Contents:=True, Scenarios:=True, UserInterfaceOnly:=True
Next wks
Next wkb


oder

Dim RaZelle As Range
For Each RaZelle In Range("C7:FK18") ' & ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row)

'Schriftfarbe gelb
'If RaZelle.Font.ColorIndex = 6 Then
' Hintergrund gelb
If RaZelle.Interior.ColorIndex = 6 Then

'RaZelle.Value = Cells(RaZelle.Row, RaZelle.Column + 1)
' für Spalte rechts
'
RaZelle.Value = Cells(RaZelle.Row, RaZelle.Column - 1).Value
' für Spalte links
End If
Next RaZelle


Danke schonmal

Steffen

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Schleifendurchläufe zählen
02.02.2003 21:04:07
PeterW

Hallo Steffen,

zähl vor dem NEXT einen Zählen hoch (Zähler = Zähler +1).

Gruß
Peter

Re: Schleifendurchläufe zählen--> nochmal helfen
02.02.2003 21:08:43
Steffen

Ich brauche aber die Anzahl vorher, wo müsste ich den Zähler normal einbauen ohne vorher zu ermitteln!!!

Danke

Steffen

Re: Schleifendurchläufe zählen--> nochmal helfen
02.02.2003 21:17:08
PeterW

Hallo Steffen,

das ist doch gerade der Vorteil der
For each in..
..
..
Next
Konstruktion, dass man die Anzahl nicht ermitteln muss. Aber wenn es denn sein muss, schau Dir mal Worksheets.Count (Achtung, dabei werden ausgeblendete Workbooks mitgezählt!) oder Worksheets.Count an. Für Zellbereiche musst Du halt das Produkt aus Zeilen und Spalten bilden.

Gruß
Peter

Anzeige
Re: Schleifendurchläufe zählen--> nochmal helfen
02.02.2003 21:18:15
Martin Bolleter

Hallo Steffen

für alle deine Beispiele lässt sich mit der Methode Count im voraus feststellen, wieviele es denn sein werden:

Workbooks.Count sagt dir, wieviele Mappen gerade offen sind
ActiveWorkbook.Worksheets.Count gibt die Anzahl Blätter, und
Range("A1:K17").Cells.Count die Anzahl Zellen im Bereich.

Ich hoffe, das war deine Frage :o)

Gruss
Martin

Anzeige
Re: Schleifendurchläufe zählen--> nochmal helfen
02.02.2003 21:20:30
Nepumuk

Hallo Steffen,
im ersten Beispiel musst du zumindest die Mappen eizeln prüfen und die Anzahl der Blätter summieren.

For Each wkb In Workbooks
zähler = zähler + wkb.Worksheets.Count
Next wkb

das zweite Beispiel ist einfach:

zähler = Range("C7:FK18").Columns.Count * Range("C7:FK18").Rows.Count

Gruß
Nepumuk

Anzeige
Re: Schleifendurchläufe zählen--> nochmal helfen
02.02.2003 21:23:11
Klaus-Dieter

Hallo Steffen,

da gibt es keine Möglichkeit. Eine For Each Next Schleife kennt vor dem Start die Anzahl der erforderlichen Durchläufe auch nicht.


Gruß Klaus-Dieter
Klaus-Dieter's Excel VBA Seite


werds mal testen
02.02.2003 21:29:31
Steffen

Danke an alle, super Sache dieses Forum

Steffen

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Schleifendurchläufe in Excel VBA zählen


Schritt-für-Schritt-Anleitung

Um die Anzahl der Schleifendurchläufe in Excel VBA zu zählen, kannst du die folgenden Schritte befolgen:

  1. Zähler deklarieren: Füge am Anfang deines Codes eine Variable für den Zähler hinzu.

    Dim zähler As Long
    zähler = 0
  2. Schleife einrichten: Implementiere die Schleifenstruktur, um die gewünschten Elemente zu durchlaufen. Beispiel für Workbooks:

    For Each wkb In Workbooks
       zähler = zähler + wkb.Worksheets.Count
    Next wkb
  3. Ergebnisse anzeigen: Nach der Schleife kannst du den Zähler verwenden, um die Anzahl der Durchläufe zu sehen, z.B. mit einer MessageBox.

    MsgBox "Anzahl der Blätter: " & zähler

Häufige Fehler und Lösungen

  • Fehler: Zähler wird nicht hochgezählt

    • Lösung: Stelle sicher, dass der Zähler innerhalb der Schleife korrekt erhöht wird. Wenn du für Zellbereiche zählst, vergewissere dich, dass du die richtige Methode verwendest, um die Anzahl der Zellen zu ermitteln.
  • Fehler: Schleife läuft nicht wie erwartet

    • Lösung: Überprüfe die Struktur deiner Schleife. Achte darauf, dass die Bedingungen für den Durchlauf korrekt sind und alle Objekte richtig referenziert werden.

Alternative Methoden

Falls du die Anzahl der Schleifendurchläufe im Voraus ermitteln möchtest, gibt es auch andere Ansätze:

  • Worksheet.Count: Verwende Worksheets.Count, um die Anzahl der Arbeitsblätter zu zählen.

  • Range.Count: Für Zellbereiche kannst du die Anzahl der Zellen mit Range("C7:FK18").Cells.Count ermitteln.

  • Für benutzerdefinierte Zähler: Wenn du die Anzahl der Schleifendurchläufe für spezifische Bedingungen zählen möchtest, kannst du die Zähler-Logik in eine Funktion einbetten.


Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen, die Schleifendurchläufe zu zählen:

  1. Zählen von Arbeitsblättern in allen geöffneten Arbeitsmappen:

    Dim zähler As Long
    zähler = 0
    For Each wkb In Workbooks
       zähler = zähler + wkb.Worksheets.Count
    Next wkb
    MsgBox "Insgesamt offene Arbeitsblätter: " & zähler
  2. Zählen von Zellen in einem bestimmten Bereich:

    Dim zähler As Long
    zähler = Range("C7:FK18").Cells.Count
    MsgBox "Anzahl der Zellen im Bereich C7:FK18: " & zähler

Tipps für Profis

  • Verwende Debug.Print: Anstelle von MsgBox kannst du Debug.Print verwenden, um die Ergebnisse im Direktfenster anzuzeigen. Das ist nützlich, wenn du viele Informationen anzeigen möchtest, ohne ständig Dialogfenster zu schließen.

  • Optimierung der Performance: Wenn du große Datenmengen bearbeitest, denke daran, die Bildschirmaktualisierung (Application.ScreenUpdating) vorübergehend auszuschalten, um die Performance zu verbessern.


FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der Schleifendurchläufe vor dem Start der Schleife ermitteln?
Du kannst die Anzahl der Elemente, die du durchlaufen möchtest, mit Methoden wie Worksheets.Count oder Range.Count im Voraus ermitteln.

2. Was ist der Unterschied zwischen For Each und For Schleifen in VBA?
For Each wird verwendet, um durch Objekte zu iterieren, während For üblicherweise für eine bestimmte Anzahl von Durchläufen verwendet wird. For Each ist oft leichter zu lesen und sollte bevorzugt werden, wenn die Anzahl der Elemente nicht bekannt ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige