AW: VBA: mit Array Zeilen ausblenden
24.09.2003 11:50:40
ChrisL
Hi Christoph
Also... dein Gedanke mit dem Array bringt m.E. deshalb nichts, weil du nicht verschiedene Zeilen mittels Array gleichzeitig ein-/ausblenden kannst.
z.B.
Rows(Array(1, 3, 10)).EntireRow.Hidden = False
...hat bei mir nicht funktioniert.
Somit müsstest du also dein Array zum Abschluss trotzdem nochmals in einer Schlaufe durchlaufen und die Zeilen einzeln ein/ausblenden.
Die Idee mit der Formel würde zwar einiges bringen, nur fällt mir die Formel nicht ein. Bin nicht so der Profi auf dem Gebiet.
Anbei aber trotzdem ein neuer Vorschlag. Einerseits habe ich wie im ersten Beitrag geschrieben von Spalten dann Zeilen in Zeilen dann Spalten Durchlauf geändert. Ferner da ich davon ausgehe, dass du in der Regel mehr Zeilen ausblendest als einblendest den Code quasi in ein 'Negativ' geändert.
Schliesslich, habe ich dir trotzdem noch ein Array eingebaut, welches die relevanten Spalten enthält. Spalten die keinen Filter enthalten sollten ja nicht in jeder Zeile neu durchlaufen werden, deshalb werden nur die Spalten geprüft, die auch massgebend sind.
Gruss
Chris
Option Explicit
Sub test_filter()
Dim i As Integer
Dim j As Byte
Dim AnzSpalten As Byte, Arr As Variant
Application.ScreenUpdating = False
AnzSpalten = 21 - Application.WorksheetFunction.CountBlank(Range("B3:V3"))
ReDim Arr(AnzSpalten)
For j = 2 To 20
If Cells(3, j) <> "" Then
i = i + 1
Arr(i) = j
End If
Next j
Rows("4:2000").EntireRow.Hidden = True
For i = 4 To 2000
For j = 1 To AnzSpalten
If Cells(i, Arr(j)) <> Cells(3, Arr(j)) Then Exit For
Rows(i).EntireRow.Hidden = False
Next j
Next i
Application.ScreenUpdating = True
End Sub