Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
AutoFilter Kriterien in Spalte schreiben / Variant auslesen
zurück: Hyperlink suchen, in anderem Worksheet finden und ersetzen weiter: Suche Buchstaben ersetze durch Gleichheitszeichen geht nicht Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
schlseb
Erfahren


Verfasst am:
24. Apr 2014, 19:13
Rufname:
Wohnort: Villingen-Schwenningen

AutoFilter Kriterien in Spalte schreiben / Variant auslesen - AutoFilter Kriterien in Spalte schreiben / Variant auslesen

Nach oben
       Version: Office 2010

Hallo zusammen,

ich möchte gerne die AutoFilterkriterien einer Spalte in eine andere Spalte per Makro schreiben. Probleme bereiten mir dabei die Variant-Werte für Criteria1 und Criteria2, die ja je nach Filtereinstellung einen einzelnen Wert enthalten oder auch ein Array mit der Auswahl. Ganz sicher ist dies bei Criteria1 möglich, bin mir allerdings nicht ganz klar, ob auch Filtereinstellungen möglich sind, bei denen Criteria 2 ein Array enthält. An sich ist es aber auch wurscht, ich hätte einfach beide gleich behandelt.

Wie kann ich nun den Variant auslesen, sodass dies immer funktioniert unabhängig ob nun ein einzelner Wert drin steht oder ein Array? Oder gibt es alternativ eine einfache Möglichkeit dies abzufragen und dann mit If...Then...Else zu behandeln?

Vielen Dank.


Zur Info: Bisher sieht mein Code so aus - nur das er eben nicht funktioniert, wenn kein Array im Variant steht...
Code:
Private Sub writeFilterStatusInWorkbook()
    'Definition des Zielbereichs zum schreiben der Filtereinstellungen
    Dim target As Range
    Set target = Worksheets("Letzter Eintrag").Range("F:M")
    Dim StartLine As Integer
    StartLine = 2
   
    If IsEmpty(filterArray) Then
        Debug.Print "Achtung: Schreiben der Filter in Arbeitsmappe abgebrochen, da filterArray noch nicht initialisiert wurde."
        Exit Sub
    End If
   
    Dim LineIndex
    For col = 1 To UBound(filterArray(), 1)
        If Not IsEmpty(filterArray(col, 1)) Then
            If Not (filterArray(col, 3) = False) Then
                target.Cells(LineIndex, col).Value = "Criteria2:"
                LineIndex = LineIndex + 1
                For i = 0 To UBound(filterArray(col, 3))
                    target.Cells(LineIndex + i, col).Value = filterArray(col, 3)(i)
                Next i
                LineIndex = LineIndex + UBound(filterArray(col, 3))
            End If
            If Not (filterArray(col, 2) = False) Then
                target.Cells(LineIndex, col).Value = "Operator:"
                LineIndex = LineIndex + 1
                target.Cells(LineIndex, col).Value = filterArray(col, 2)
                LineIndex = LineIndex + 1
            End If
            If Not (filterArray(col, 1) = False) Then
                target.Cells(LineIndex, col).Value = "Criteria1:"
                LineIndex = LineIndex + 1
                For i = 0 To UBound(filterArray(col, 1))
                    target.Cells(LineIndex + i, col).Value = filterArray(col, 1)(i)
                Next i
                LineIndex = LineIndex + UBound(filterArray(col, 1))
            End If
        End If
    Next
End Sub
Isabelle :-)
Menschin


Verfasst am:
24. Apr 2014, 19:44
Rufname:
Wohnort: Westlicher Spiralarm der Galaxis

AW: AutoFilter Kriterien in Spalte schreiben / Variant ausle - AW: AutoFilter Kriterien in Spalte schreiben / Variant ausle

Nach oben
       Version: Office 2010

Hallöchen,

im Prinzip:

Code:
Public Sub Test()

    Dim vntCriteria As Variant

    vntCriteria = Tabelle1.AutoFilter.Filters(1).Criteria1

    If IsArray(vntCriteria) Then
        MsgBox "Mehrere Werte"
    Else
        MsgBox vntCriteria
    End If
End Sub

Wenn du in Criteria1 ein Array findest, dann hat Criteria2 keinen Wert und Operator einen Wert aus XlAutoFilterOperator außer xlOr und xlAnd. Nur den Datumsfilter kannst du nicht auslesen. Wenn du in der Zeile:

Code:
vntCriteria = Tabelle1.AutoFilter.Filters(1).Criteria1

in einen Fehler läufst (1004 - Anwendungs- oder objektdefinierter Fehler) dann ist mit Sicherheit ein Datumsfilter gesetzt (wobei ich davon ausgehe, dass du vorher prüfst, ob der Filter in der Spalte überhaupt benutzt wird (On-Eigenschaft des Filters)).

_________________
LG Isi

Die Mitgliedschaft im Forum erhöht deine Chance auf eine Antwort von mir um 99,999%
schlseb
Erfahren


Verfasst am:
25. Apr 2014, 10:20
Rufname:
Wohnort: Villingen-Schwenningen

AW: AutoFilter Kriterien in Spalte schreiben / Variant ausle - AW: AutoFilter Kriterien in Spalte schreiben / Variant ausle

Nach oben
       Version: Office 2010

Hi,

tz, so einfach. Und ich verzweifel halb, bei der Suche in der Hilfe Wink. Von IsArray() war in dem Zusammenhang mit Variant mal wieder nichts erwähnt - typisch.

Vielen Dank.

Den Datumsfilter verwende ich nicht in meinen Spalten, dennoch interessehalber die Frage warum sich der nicht auslesen lässt?

.On habe ich bisher nicht abgefragt sondern stattdessen die IsEmpty() Abfragen verwendet. Bisher funktioniert das auch, oder siehst du da Nachteile?

Gruß
Isabelle :-)
Menschin


Verfasst am:
25. Apr 2014, 10:32
Rufname:
Wohnort: Westlicher Spiralarm der Galaxis

AW: AutoFilter Kriterien in Spalte schreiben / Variant ausle - AW: AutoFilter Kriterien in Spalte schreiben / Variant ausle

Nach oben
       Version: Office 2010

Hallöchen,

On gibt dir zurück, ob der Filter in der Spalte überhaupt gesetzt ist. Das ist ein boolscher Wert und den abzufragen ist auf alle Fälle schneller als das Kriterium auszulesen und das dann abzufragen.

_________________
LG Isi

Die Mitgliedschaft im Forum erhöht deine Chance auf eine Antwort von mir um 99,999%
schlseb
Erfahren


Verfasst am:
25. Apr 2014, 10:46
Rufname:
Wohnort: Villingen-Schwenningen

AW: AutoFilter Kriterien in Spalte schreiben / Variant ausle - AW: AutoFilter Kriterien in Spalte schreiben / Variant ausle

Nach oben
       Version: Office 2010

Korrektur: Ich verwende doch .On - beim Schreiben des FilterArrays. Stand grad auf dem Schlauch. Die Methode dazu enspricht weitgehend dem Beispiel aus der Hilfe (bei AutoFilter-Objekt), musste es allerdings etwas modifizieren, da im Original nicht lauffähig. Meine Vermutung ist, das Beispiel war veraltet und nicht auf die Filterfunktionen von 2010 zugeschnitten.

Code:
Sub MemorizeFilters(Blattname As String)

Set w = Worksheets(Blattname)
With w.AutoFilter
    currentFiltRange = .Range.Address
    With .Filters
        ReDim filterArray(1 To .Count, 1 To 3)
        For f = 1 To .Count
            With .Item(f)
                If .On Then
                    filterArray(f, 1) = .Criteria1
                    If .Operator Then
                        filterArray(f, 2) = .Operator
                        If (.Operator + 1) / 2 = 1 Then
                            filterArray(f, 3) = .Criteria2
                        Else
                            filterArray(f, 3) = False
                        End If
                    End If
                End If
            End With
        Next
    End With
End With

w.AutoFilterMode = False

End Sub
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: inhalt einer zelle anhand von verweisen auslesen 5 vortax 1501 02. Apr 2005, 23:04
Gast inhalt einer zelle anhand von verweisen auslesen
Keine neuen Beiträge Excel Formeln: Formel für eine Spalte festlegen 6 annabell 897 01. Apr 2005, 11:19
annabell Formel für eine Spalte festlegen
Keine neuen Beiträge Excel Formeln: Werte auslesen und anzeigen 5 El-Gringo 2733 29. März 2005, 18:05
El-Gringo Werte auslesen und anzeigen
Keine neuen Beiträge Excel Formeln: SVERWEIS - NACH 2 KRITERIEN GLEICHZEITIG SUCHEN 6 janine071108 3121 21. Feb 2005, 17:55
Arnim SVERWEIS - NACH 2 KRITERIEN GLEICHZEITIG SUCHEN
Keine neuen Beiträge Excel Formeln: Suche Formel, welche Spalte nur bis zum akt. Datum berechnet 7 Sveny 1609 04. Jan 2005, 21:45
Sveny Suche Formel, welche Spalte nur bis zum akt. Datum berechnet
Keine neuen Beiträge Excel Formeln: Vor- und Nachname in 1 Spalte in 2 Spalten aufteilen 2 Gast 2920 26. Nov 2004, 11:48
Gast Vor- und Nachname in 1 Spalte in 2 Spalten aufteilen
Keine neuen Beiträge Excel Formeln: Verschiedene Werte in einer Spalte 4 Toledo 2408 23. Nov 2004, 19:54
Toledo Verschiedene Werte in einer Spalte
Keine neuen Beiträge Excel Formeln: Zählen von Werten aus untersch. Spalten mit 2 Kriterien 2 Sigi 2526 20. Nov 2004, 03:18
Gast Zählen von Werten aus untersch. Spalten mit 2 Kriterien
Keine neuen Beiträge Excel Formeln: gegeben 2 Spalten/ ges. wie oft Wert aus Spalte 1 mit Wert a 4 Stefan B. 1310 21. Okt 2004, 08:06
Stefan B. gegeben 2 Spalten/ ges. wie oft Wert aus Spalte 1 mit Wert a
Keine neuen Beiträge Excel Formeln: Dynamisches Erweitern einer Spalte mit Formel 11 Case 1011 11. Okt 2004, 08:43
Case Dynamisches Erweitern einer Spalte mit Formel
Keine neuen Beiträge Excel Formeln: Formel auslesen 7 cschaden 9606 02. Okt 2004, 20:12
cschaden Formel auslesen
Keine neuen Beiträge Excel Formeln: Wert nach 2 Kriterien raussuchen 2 KARL 1902 24. Sep 2004, 12:11
KARL Wert nach 2 Kriterien raussuchen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel-Formeln