PDA

Vollständige Version anzeigen : AutoFilter-Pfeile ausblenden, aber Autofilter aktiv lassen?


cpac
25.03.2009, 16:12
Auf einem Tabellenblatt wird mittels einer VBA-Routine ein AutoFilter gesetzt, um Zeilen auszublenden, die in einer bestimmten Spalte leer sind. Ich würde nun gern die AutoFilter-Dropdownpfeile komplett ausblenden. Mit

ActiveSheet.Range(pstrcFilterBereich).AutoFilter Field:=2, Criteria1:="<>", VisibleDropDown:=False

werden allerdings nur die Dropdownpfeile für die gefilterten Felder ausgeblendet.

Als Hilfskonstruktion blende ich derzeit die Zeile, die den Autofilter enthält, aus. Diese Lösung gefällt mir nicht so recht, zumal ich dadurch eine zusätzliche Zeile benötige, in der die Beschriftungen nochmal stehen, die in der AutoFilter-Zeile stehen, wegen des Ausblendens derselben aber nicht mehr sichtbar sind.

Gibt es einen anderen Weg?

jinx
25.03.2009, 16:22
Moin, Carsten,

Sub AnzeigeAutofilterAusschalten()

Dim rngZelle As Range
Dim lngSpalte As Long

lngSpalte = Cells(1, 1).End(xlToRight).Column
Application.ScreenUpdating = False

For Each rngZelle In Range(Cells(1, 1), Cells(1, lngSpalte))
rngZelle.AutoFilter Field:=rngZelle.Column, Visibledropdown:=False
Next

Application.ScreenUpdating = True

End Sub

IngGi
25.03.2009, 16:26
Hallo Carsten,

du musst auch die Spalten abklappern, nach denen nicht gefiltert wird. Hier mal ein Beispiel. Ich habe eine Tabelle von A1:C10 mit Überschriften in Zeile 1. Die Daten werden nach Spalte 2 gefiltert, wobei alle Zeilen angezeigt werden, die in Spalte 2 Werte größer 1 haben. In den anderen Spalten wird nur der DropDownPfeil ausgeblendet:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Sub</span> DatenFiltern()
&nbsp;
<span class="TOKEN">Dim</span> lngSpalte <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
&nbsp;
<span class="TOKEN">For</span> lngSpalte = 1 <span class="TOKEN">To</span> 3
<span class="TOKEN">If</span> lngSpalte = 2 <span class="TOKEN">Then</span>
Range(&quot;A1&quot;).AutoFilter Field:=lngSpalte, Criteria1:=&quot;&gt;1&quot;, VisibleDropDown:=False
<span class="TOKEN">Else</span>
Range(&quot;A1&quot;).AutoFilter Field:=lngSpalte, VisibleDropDown:=False
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">Next</span> <span class="REM">'lngSpalte</span>
&nbsp;
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span>&nbsp;</pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Gruß Ingolf

cpac
26.03.2009, 08:51
@jinx: Deinen Beispielcode muss ich aber noch um die entsprechenden Filterkriterien für die Spalten, nach denen gefiltert werden soll, ergänzen, oder?

@Ingolf: Funktioniert!

Euch beiden danke für die Tipps!