Anzeige
Archiv - Navigation
796to800
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
796to800
796to800
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

"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.

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
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
Anzeige
auch dir vielen Dank! - ot
31.08.2006 11:52:26
Klaus
.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige