schneller: ohne Schleife
16.04.2015 12:19:31
Klaus
Hi Karsten,
schneller ist es, das ganze ohne Schleife zu erledigen. Dann macht Excel nur eine ausblenden-Operation statt vieler einzelner.
Zum Beispiel könnte man das per Autofilter lösen, das geht rasend schnell. Dazu muss aber zwingend in Zelle B5 etwas stehen - aber da hast du wahrscheinlich eh eine Überschrift?
Sub OhneSchleife()
Const SpalteCheck As Long = 2 'Spalte B
Const ZeileAb As Long = 6
Const ZeileBis As Long = 85
Const WertAusblenden As String = "0"
Const ZeileHoch As Long = 13.5
Const ZeileTief As Long = 0
Dim NullRange As Range
Application.ScreenUpdating = False
With ActiveSheet
.Rows(ZeileAb & ":" & ZeileBis).RowHeight = ZeileHoch
If .AutoFilterMode Then .Cells.AutoFilter 'Turns OFF Autofilter, if any
.Range(.Cells(ZeileAb - 1, SpalteCheck), .Cells(ZeileBis, SpalteCheck)).AutoFilter 'Turns _
ON Autofilter on given range
.Cells(ZeileAb - 1, SpalteCheck).AutoFilter Field:=1, Criteria1:=WertAusblenden
On Error GoTo hell
Set NullRange = .Range(.Cells(ZeileAb, SpalteCheck), .Cells(ZeileBis, SpalteCheck)). _
SpecialCells(xlCellTypeVisible).EntireRow
.Cells.AutoFilter
NullRange.RowHeight = ZeileTief
On Error GoTo 0
hell:
If .AutoFilterMode Then .Cells.AutoFilter 'Turns OFF Autofilter, if any
Application.ScreenUpdating = True
End With
End Sub
Wenn du in dem Blatt bereits einen Autofilter nutzt (den das Makro dann abschaltet), dann ist es am einfachsten den am Makroende wieder einzuschalten.
Auch möglich wäre eine Hilfsspaltenlösung, das geht dann ganz ohne Autofilter.
Grüße,
Klaus M.vdT.