Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
888to892
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
888to892
888to892
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Modifizierter Filter_Switch

Modifizierter Filter_Switch
28.07.2007 22:38:32
Peter
Liebes Forum
Nachfolgenden Filterswitch hat mit Nepumuk zur Verfügung gestellt. Läuft super.
Nun möchte ich noch einen modifizierten Switch und zwar möchte ich wechseln zwischen:
.Rows(1).AutoFilter Field:=1, Criteria1:="=S"
und
.Rows(1).AutoFilter Field:=1, Criteria1:="=F"
Dabei müsste ich ja wohl die Criteria1 abfragen können, um dann das jeweilige andere Kriterum zu wählen.
Kann mir da jemand helfen?
Danke, Peter

Sub Filter_Switch2()
Dim strASN As String
strASN = ActiveSheet.Name
With Worksheets("K_Anlagen")
.Select
If .AutoFilterMode Then
If .FilterMode Then
.ShowAllData
Else
.Rows(1).AutoFilter Field:=1, Criteria1:="=S"
End If
End If
End With
Worksheets(strASN).Activate
End Sub


8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Modifizierter Filter_Switch
28.07.2007 23:43:13
Nepumuk
Hallo Peter,
das ist doch ganz einfach :)
Public Sub test()
    With Tabelle1.AutoFilter
        If .Filters(1).Criteria1 = "=S" Then
            .Range.AutoFilter Field:=1, Criteria1:="F"
        Else
            .Range.AutoFilter Field:=1, Criteria1:="S"
        End If
    End With
End Sub

Gruß
Nepumuk

Anzeige
AW: Modifizierter Filter_Switch
29.07.2007 22:14:00
Peter
Hallo Nepumuk
Super, dass du mir auf meinen Eintrag geantwortet hast.
Ich habe versucht, den Code bei mir einzubauen. Dabei habe ich die Codezeile
With Tabelle1.AutoFilter
bei mir wie folgt geschrieben
With Worksheets("K_Anlagen")
Das hat mir bei der Zeile
If .Filters(1).Criteria1 = "=S" Then
eine Fehlermeldung beschert (Anwendungs- oder objektdefinierter Fehler)
weshalb ich dachte, es müsse vielleicht anstelle .Filters(1) .Autofilters(1) heissen.
Da ich bei meinen anderen "Filtercodes" die entsprechende Tabelle zuerst selectieren muss, dachte ich, das sei vielleicht auch hier nötig, weshalb ich noch
With Worksheets("K_Anlagen")
.Select
End With
eingeschoben habe.
Aber das hat letztlich nicht ganz gefruchtet.
Veilleicht ist ja für die gleich erkennbar, wo ich auf dem Holzweg bin.
Gruss, Peter
PS.: Der Autofilter ist in der Tabelle "K_Anlagen" wirklich gesetzt

Sub Filter_Switch2()
Dim strASN As String
With Worksheets("K_Anlagen")
.Select
End With
With Worksheets("K_Anlagen").AutoFilter
If .AutoFilter(1).Criteria1 = "=S" Then
.Range.AutoFilter Field:=1, Criteria1:="F"
Else
.Range.AutoFilter Field:=1, Criteria1:="S"
End If
End With
End Sub


Anzeige
AW: Modifizierter Filter_Switch
29.07.2007 23:19:00
Nepumuk
Hallo Peter,
da Makro war schon ok so. Nur war in deiner Tabelle kein Filter in Spalte A gesetzt. Damit da nichts passiert, fangen wir alle Möglichkeiten ab.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Sub test()
    With Worksheets("K_Anlagen")
        .Select
        If .AutoFilterMode Then
            If .FilterMode Then
                With .AutoFilter
                    If .Filters(1).On Then
                        If .Filters(1).Criteria1 = "=S" Then
                            .Range.AutoFilter Field:=1, Criteria1:="F"
                        Else
                            .Range.AutoFilter Field:=1, Criteria1:="S"
                        End If
                    End If
                End With
            End If
        End If
    End With
End Sub

Gruß
Nepumuk

Anzeige
AW: Modifizierter Filter_Switch
30.07.2007 07:51:00
Peter
Hallo Nepumuk
Vielen Dank für die Rückmeldung.
Nun klappts. Ich habe noch zwei Anschlussfragen.
A) Was deutete im vorigen Code darauf hin, dass der Filter in Spalte A erwartet wurde?
B) Zum aktuellen Code: Wenn ich diesen Code anwähle, kann es auch sein, dass gerade alle Positionen angezeigt werden oder noch Criteria1:="N". Ich habe versucht, zwei zeilen zu deaktivieren, mit der Vorstellung, dass dies bewirkt, dass nicht geprüft wird, was im Filter gerade aktiv ist. Das scheint aber nicht die Lösung zu sein.
Darf ich dich nochmals bitten, mir hier weiterzuhelfen?
Herzlichen Dank!
Peter

Public Sub Filter_Switch2()
With Worksheets("K_Anlagen")
.Select
If .AutoFilterMode Then
If .FilterMode Then
With .AutoFilter
'   If .Filters(1).On Then
If .Filters(1).Criteria1 = "=S" Then
.Range.AutoFilter Field:=1, Criteria1:="F"
Else
.Range.AutoFilter Field:=1, Criteria1:="S"
End If
' End If
End With
End If
End If
End With
End Sub


Anzeige
AW: Modifizierter Filter_Switch
30.07.2007 08:04:00
Nepumuk
Hallo Peter,
1. Ich frage nicht die Spalte A, sondern die 1. Filterspalte ab. Die ist aber in der überwiegenden Anzahl der Fälle gleichzusetzten mit Spalte A.
2. Diese Zeile fragt nur ab, ob im ersten Feld überhaupt gefiltert wird. Denn wenn kein Filter gesetzt ist ergibt die Abfrage des Kriteriums eine Fehlermeldung. Die kennst du ja schon.
3. Ich weiß nicht, wie das Programm reagieren soll, wenn noch nicht gefiltert ist. Das hast du nicht geschrieben. Sondern nur, dass du zwischen "F" und "S" hin und herschalten willst. Je präziser die Frage, desto präziser die Antwort. Rumfummeln in einem Code, dessen Logik du nicht verstehst, bringt da nichts.
Gruß
Nepumuk

Anzeige
AW: Modifizierter Filter_Switch
30.07.2007 08:18:00
Peter
Hallo Nepumuk
Sorry für meine unpräzise Anfrage.
Wenn weder "F" noch "S" angewählt ist, ist es egal, ob beim Aufrufen der Codes nach "F" oder "S" gefiltert wird. Die gewünschte Filterung wird ja in diesem Falle spätestens nach dem 2. Aufrufen erreicht.
Gruss, Peter

AW: Modifizierter Filter_Switch
30.07.2007 11:59:54
Nepumuk
Hallo Peter,
so?
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Sub test()
    With Worksheets("K_Anlagen")
        .Select
        If .AutoFilterMode Then
            If .FilterMode Then
                With .AutoFilter
                    If .Filters(1).On Then
                        If .Filters(1).Criteria1 = "=S" Then
                            .Range.AutoFilter Field:=1, Criteria1:="F"
                        Else
                            .Range.AutoFilter Field:=1, Criteria1:="S"
                        End If
                    Else
                        .Range.AutoFilter Field:=1, Criteria1:="F"
                    End If
                End With
            End If
        End If
    End With
End Sub

Gruß
Nepumuk

Anzeige
AW: Modifizierter Filter_Switch
31.07.2007 20:24:25
Peter
Hallo Nepumuk
Habe festgestellt, dass ich wohl eine Rückmeldung nicht abgeschickt habe. Ich konnte nämlich das Problem lösen, indem ich aus deiner anderen Lösung den Schritt 1 kreiert habe. So wird ja, wenn ein Autofilter besteht und aktuell gefiltert ist, nach "F" gefiltert. Dann läuft der Rest wie geschmiert. Nachmals vielen Dank für die grosse Unterstützung.
Grüsse, Peter

Public Sub Filter_Switch2()
'Schritt 1
With Worksheets("K_Anlagen")
.Select
If .AutoFilterMode Then
If Not .FilterMode Then
Rows(1).AutoFilter Field:=1, Criteria1:="=F"
Else
End If
'Ende Schritt 1
End If
If .AutoFilterMode Then
If .FilterMode Then
With .AutoFilter
If .Filters(1).On Then
If .Filters(1).Criteria1 = "=S" Then
.Range.AutoFilter Field:=1, Criteria1:="F"
Else
.Range.AutoFilter Field:=1, Criteria1:="S"
End If
End If
End With
End If
End If
End With
End Sub


Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige