Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: "for each" statt Schleife?

"for each" statt Schleife?
31.08.2006 11:22:31
Klaus
Hallo Forum,
mit folgendem Code blende ich unbenötigte Zeilen in einer großen Matrix aus. Das funktioniert auch sehr gut, solange der Bereich überschaubar bleibt. Für mehr Geschwindigkeit möchte ich die Schleife gegen eine "For Each Element In Gruppe" Schleife tauschen, wie ich sie hier im Forum schon oft gelesen habe.
Kann mit jemand den Code updaten und ein paar erklärende Sätze geben? Die VBA Hilfe versteh ich nicht :( Probleme macht mir das korrekte dimensionieren von "Element" und "Gruppe".

Sub Ausblenden()
Dim i As Integer
Range("C3:C367").EntireRow.Hidden = True
For i = 3 To 367
If Range("C" & i) = Range("B1") Then _
Range("C" & i).EntireRow.Hidden = False
Next i
End Sub

Schonmal vielen Dank,
Klaus M.vdT.
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: "for each" statt Schleife?
31.08.2006 11:32:07
c0bRa
Hio :)
Hier eine Möglichkeit:
Modul Modul1:
Option Explicit
Sub Ausblenden()
    ' Variablendeklarationen
    Dim r As Range
    Dim rngA As Range
    ' Zuweisung einer Range an die Variable
    Set rngA = Range("C3:C367")
    ' Alle verbergen
    rngA.EntireRow.Hidden = True
    ' Für jede Zelle (r) im Bereich RngA
    For Each r In rngA
        ' Wenn der Wert von R gleich dem der linken
        If r.Value = r.Offset(0, -1).Value Then
            ' Wieder anzeigen
            r.EntireRow.Hidden = False
        End If
    Next r
End Sub

Anzeige
AW: "for each" statt Schleife?
31.08.2006 11:36:48
u_
Hallo,
ich weiß nicht ob das mehr Speed bring, eleganter ist's allemal.

Sub Ausblenden()
Dim c As Range
Application.ScreenUpdating = False
With Range("C3:C367")
For Each c In .Cells 'alle Zellen im Bereich c3:c367(das ist die Gruppe) durchlaufen
'Konstruktion ohne If
'(Not c = Range("B1")) ergibt False wenn c=B1 ist
c.EntireRow.Hidden = (Not c = Range("B1"))
Next c
End With
Application.ScreenUpdating = True
End Sub

Gruß
Lesen gefährdet die Dummheit
Anzeige
Vielen Dank euch beiden! oT
31.08.2006 11:39:04
Klaus
.
AW: "for each" statt Schleife?
31.08.2006 11:39:22
Frederik
Hallo Klaus!
Das dürfte es sein:

Sub Ausblenden()
Dim c As Range
For Each c In Range("C2:C" & Range("C65536").End(xlUp).Row)
If c <> Range("B1") Then c.EntireRow.Hidden = True
Next c
End Sub

Gruß
Frederik
auch dir vielen Dank! - ot
31.08.2006 11:52:26
Klaus
.
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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