Kurze Frage: Gibt es eine Möglichkeit, per VBA festzustellen, ob in
irgendeiner Spalte gerade Autofilter-Kriterien gesetzt sind? (Es soll nicht
festgestellt werden, ob der Autofilter-Modus eingeschaltet ist oder nicht.)
Danke für die Hilfe.
Chris
Hallo Chris,
probier mal:
'------------------------------------------
Dim f As Filter
For Each f In ActiveSheet.AutoFilter.Filters
If f.On Then
Beep
End If
Next
'------------------------------------------
Viele Grüße
Thomas Schindzielorz
--------------------------------------------------------
Bytes & More tho...@bytesandmore.de
Todtglüsinger Str. 16 http://www.bytesandmore.de
21 255 Tostedt
04182-404 770 Fax: 04182-404 695
--------------------------------------------------------
lange Antwort:
Sub Auswertdaten()
Dim gf(24) 'Hier die Anzahl der zu prüfenden Spalten angeben.
Dim zähler
Dim inhalt1
Dim inhalt2
inhalt1 = ""
inhalt2 = ""
Dim Kriterien, i
Kriterien = ""
If Sheets("Daten").FilterMode Then
With Sheets("Daten").AutoFilter
For i = 1 To .Range.Columns.Count
If .Filters(i).On Then
' If .Filters(i).Criteria1 > " " Then
inhalt1 = .Filters(i).Criteria1
If inhalt1 > "" Then
zähler = zähler + 1
' gf(i) = " " & .Filters(i).Criteria1
gf(i) = " " & inhalt1
Kriterien = Kriterien & .Range.Cells(1, i).Text & _
inhalt1 & Chr(13)
End If
inhalt1 = ""
' End If
On Error Resume Next
' If .Filters(i).Criteria2 > " " Then
inhalt2 = .Filters(i).Criteria2
If inhalt2 > "" Then
zähler = zähler + 1
' gf(i) = gf(i) & " " & .Filters(i).Criteria2
gf(i) = gf(i) & " " & inhalt2
Kriterien = Kriterien & .Range.Cells(1, i).Text & _
inhalt2 & Chr(13)
inhalt2 = ""
End If
' End If
End If
Next
End With
If Kriterien <> "" Then Kriterien = _
Left(Kriterien, Len(Kriterien) - 1)
End If
If zähler > 5 Then
x = "Sie haben mehr als 5 Filterkriterien eingestellt." & Chr(13)
& _
"Bitte prüfen Sie den unteren Seitenrand." & Chr(13) & _
"Ziehen Sie ggf. den Fußzeilenbereich größer"
MsgBox x
End If
Sheets("Daten").PageSetup.LeftFooter = Kriterien
End Sub
Sub filteraus()
Dim Kriterien, i
Kriterien = ""
If Sheets("Daten").FilterMode Then
With Sheets("Daten").AutoFilter
For i = 1 To .Range.Columns.Count
If .Filters(i).On Then
Selection.AutoFilter Field:=i
End If
Next
End With
End If
End Sub
Christian Schreiber schrieb:
--
bis dann,
Robert
Nicht was Du sagst ist entscheidend,
sondern was verstanden wird.