Bei akt. Autofilter Spalten ausblenden

27/04/2010 - 19:44 von Jens Herhold | Report spam
Hallo Leute,

wieder einmal komm ich nicht weiter, gegeben ist ein Tabellenblatt

A B C D E F
1 Nummer Name Var 1 Var 2 Var 3 Var 4
2 12345 Niet x x x x
3 98765 Clip x x x
4 45678 LED x x

in Zeile 1 sind die Überschriften mit dem Autofilter. Nun möchte ich, wenn
ich z.B. in Spalte D nach x filtere, dass die Spalten C, E, F ausgeblendet
und bei löschen der Filterbedingung wieder eingeblendet werden. Das soll für
alle 4 Spalten gelten, also wenn C gefiltert wird, dann eben D, E und F
ausblenden u.s.w.
Ist das machbar?
Vielen Dank schon einmal

Jens
 

Lesen sie die antworten

#1 Andreas Killer
28/04/2010 - 12:24 | Warnen spam
On 27 Apr., 19:44, Jens Herhold
wrote:

in Zeile 1 sind die Überschriften mit dem Autofilter. Nun möchte ich, wenn
ich z.B. in Spalte D nach x filtere, dass die Spalten C, E, F ausgeblendet
und bei löschen der Filterbedingung wieder eingeblendet werden. Das soll für


...
Ist das machbar?


Ja, aber es braucht einen Haken.

Das Problem ist das Du (in VBA) nicht mitbekommst wenn ein Autofilter
sich àndert. Hier braucht es einen Trick:

Plaziere irgendwo in der Tabelle die Formel
=TEILERGEBNIS(3;A:A)
Diese Formel berechnet die Anzahl der sichtbaren Werte und àndert sich
somit wenn sich der Autofilter àndert.

Damit tritt dann auch das Worksheet_Calculate-Ereignis ein und in
diesem kannst Du nun den Autofilter prüfen und Deine Spalten ein-/
ausblenden.

Wie man auf die einzelnen Filterkriterien eines Autofilters zugreift
zeigt Dir das angehàngte Beispiel.

Andreas.

Sub AutofilterReSet()
'Filtert die Daten erneut mit dem momentanen Einstellungen
'Braucht man wenn man die Daten bei gesetztem Filter àndert
Dim F As Integer, R As Range
If Not ActiveSheet.AutoFilterMode Then Exit Sub
Set R = ActiveSheet.AutoFilter.Range
With ActiveSheet.AutoFilter.Filters
For F = 1 To .Count
With .Item(F)
If .On Then
If .Operator Then
R.AutoFilter Field:=F, Criteria1:=.Criteria1, _
Criteria2:=.Criteria2, Operator:=.Operator
Else
R.AutoFilter Field:=F, Criteria1:=.Criteria1
End If
End If
End With
Next
End With
End Sub

Ähnliche fragen