PDA

Vollständige Version anzeigen : Filtern wenn Filter auf Tabellenblatt gesetzt ist...


Mik_Don
11.03.2009, 08:33
Hallo, noch eine Frage,
ich hab mehrere tabellenblätter, auf denen manche gefiltert werden müssen.
den filter hab ich schon mit Makro aufgezeichnet, d.h ich müsste jetzt nur noch die tabellenblätter mittels einer Schleife (die hab ich auch) durchlaufen lassen und dann
wenn ein filter auf diesem blatt besteht, dann (diesen Code bräuchte ich)

jetzt kommt mein Makro


wie müsste dieser Code lauten?

Grüsse aus Bayern
Michael

jinx
11.03.2009, 14:46
Moin, Michael,

If Worksheets("Tabelle1").AutoFilterMode Then
isOn = "aktiviert"
Else
isOn = "nicht aktiviert"
End If
MsgBox "AutoFilterMode ist " & isOn
Oder die Zahl der vorhandenen Zeilen einer Spalte mit der Zahl der sichtbaren über SpecialCells(xlCellTypeVisible) vergleichen - reicht das als Ansatz?

Uwe Küstner
11.03.2009, 20:58
Hallo Zusammen,

einfacher wäre es doch, direkt zu prüfen, ob wirklich gefiltert wird.

Also statt
If Worksheets("Tabelle1").AutoFilterMode Then

einfach

If Worksheets("Tabelle1").FilterMode Then

Mik_Don
12.03.2009, 11:50
Private Sub ComBut_filtern_Click()
' sind verschiedene Tabellennamen MG1; Vomo; MG2....
Dim Wiederholungen As Integer

For Wiederholungen = 1 To Worksheets.Count

Worksheets(Wiederholungen).Select

'If Worksheets(Wiederholungen).FilterMode Then Selection.AutoFilter Field:=4, Criteria1:="<>"

Next Wiederholungen
End Sub

Uwe Küstner
12.03.2009, 12:17
Hallo Michael,

teste mal so:

Private Sub ComBut_filtern_Click()
' sind verschiedene Tabellennamen MG1; Vomo; MG2....
Dim Wiederholungen As Integer
ActiveCell.Activate
For Wiederholungen = 1 To Worksheets.Count
With Worksheets(Wiederholungen)
If .FilterMode Then .Cells.AutoFilter Field:=4, Criteria1:="<>"
End With
Next Wiederholungen
End Sub

IngGi
12.03.2009, 12:20
Hallo Michael,

ich habe auch noch eine Variante:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Private Sub</span> ComBut_filtern_Click()
<span class="TOKEN">Dim</span> wksDaten <span class="TOKEN">As</span> Worksheet
<span class="TOKEN">Dim</span> objFilter <span class="TOKEN">As</span> AutoFilter
<span class="TOKEN">For</span> <span class="TOKEN">Each</span> wksDaten <span class="TOKEN">In</span> ThisWorkbook.Worksheets
<span class="TOKEN">Set</span> objFilter = wksDaten.AutoFilter
<span class="TOKEN">If</span> <span class="TOKEN">Not</span> objFilter <span class="TOKEN">Is</span> <span class="TOKEN">Nothing</span> <span class="TOKEN">Then</span>
Selection.AutoFilter field:=4, Criteria1:=&quot;&lt;&gt;&quot;
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">Next</span> <span class="REM">'wksDaten</span>
<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

Mik_Don
12.03.2009, 12:43
funktioniert leider auch nicht- Laufzeitfehler 1004
Die Autofiltermethode des Tange-Objektes konnte nicht ausgeführt werden...

aber wo liegt der Fehler??

Mik_Don
12.03.2009, 12:45
das VBA läuft zwar durch ohne Fehler- aber in den Gewünschten Blättern wird nicht filtriert.....?
an was könnte das liegen?

Mik_Don
13.03.2009, 06:15
Guten Morgen Ingolf,
leider ist da noch irgendwo ein fehler....
funktioniert leider auch nicht- Laufzeitfehler 1004
Die Autofiltermethode des Range-Objektes konnte nicht ausgeführt werden...

aber wo liegt der Fehler?? kannst mir vielleicht nochmals helfen?
Gruss Michael

Mik_Don
13.03.2009, 06:17
Hallo Uwe, auch dein Code, irgendwo ist da noch ein fehler...läuft durch- filtriert aber nicht...
lg Michael

Uwe Küstner
13.03.2009, 06:51
Hallo Michael,

vielleicht klappt es so:

Private Sub ComBut_filtern_Click()
' sind verschiedene Tabellennamen MG1; Vomo; MG2....
Dim Wiederholungen As Integer
ActiveCell.Activate
For Wiederholungen = 1 To Worksheets.Count
With Worksheets(Wiederholungen)
If .AutoFilterMode Then
If .FilterMode Then .ShowAllData
.Cells.AutoFilter Field:=4, Criteria1:="<>"
End If
End With
Next Wiederholungen
End Sub

Mik_Don
13.03.2009, 07:59
Vielen Dank, funktioniert
lg aus Bayern