Seite 1 von 1

Autofilter Kriterien via Makro setzen

Verfasst: Mo 31. Dez 2012, 14:44
von MacroDevil
Hallo zusammen!

Ich möchte mit einem Makro bei einen Autofilter zwei (Oder-) Kriterien in ein und der selben Spalte setzen.

Bisher kenne ich nur den Umweg über den Standardfilter die Kriterien via Makro zu setzen und zwar so:

Sub AutoFilter

Dim oDoc
Dim oSheet
Dim uRange ' Used Range.
Dim dRange ' DataBase Range
Dim oFD As Object ' Filter descriptor.
Dim oFields(1) As New com.sun.star.sheet.TableFilterField

oDoc = ThisComponent
oSheet = oDoc.Sheets(0)

lastZe = ubound(oSheet.data) 'index letzte Zeile des Bereichs
lastSp = ubound(oSheet.data(lastZe)) 'index letzte Spalte des Bereichs
uRange = oSheet.GetCellRangeByPosition( 0, 0, lastSp, lastZe)

If NOT Thiscomponent.DatabaseRanges.hasByName("dRange1") Then
myRange = uRange.getRangeAddress()
oDoc.DatabaseRanges.addNewByName( "dRange1", myRange )
End If

dRange = oDoc.DatabaseRanges.getByName("dRange1")
dRange.UseFilterCriteriaSource = False
dRange.AutoFilter = True
oFD = dRange.getFilterDescriptor()

With oFields(0)
.Connection = com.sun.star.sheet.FilterConnection.OR
.Field = 8
.Operator = com.sun.star.sheet.FilterOperator.EQUAL
.isNumeric = False
.StringValue = "Red"
End With

With oFields(1)
.Connection = com.sun.star.sheet.FilterConnection.OR
.Field = 8
.Operator = com.sun.star.sheet.FilterOperator.EQUAL
.isNumeric = False
.StringValue = "Yellow"
End With

oFD.SetFilterFields(oFields)
dRange.Refresh()

End Sub

Das Problem ist dann aber, das zwar nach zwei Kriterien gefiltert wird. aber nur ein Kriterium in der Pull-Down Liste des Autofilters markiert ist,
und daß das Icon der Pull-Down Liste (der Pfeil) nicht blau ist (als Kennzeichen das gefiltert ist)

Es ist dabei unerheblich ob man den Standardfilter direkt oder via Makro setzt.
Sobald zwei ("oder" )Kriterien für ein und die selbe Spalte angegeben werden hat man die zuvor genannten Probleme.

Da das ganze über den Standardfilter nicht fehlerfrei funktioniert meine Frage:

Gibt es eine Möglichkeit Autofilter Kriterien via Makro direkt zu setzen?

Gruß Klaus

Re: Autofilter Kriterien via Makro setzen

Verfasst: Sa 13. Apr 2013, 08:39
von F3K Total
Hallo Klaus,
kaum wartet man ein viertel Jahr, schwupps, kommt eine Antwort.
Ja, es funktioniert, mit z.B. diesem Makro:

Code: Alles auswählen

sub S_apply_autofilter
    dim aFilterFields3(0) as new com.sun.star.sheet.TableFilterField3
    dim aFilterFieldValue(1) as new com.sun.star.sheet.FilterFieldValue
    dim sSearchstring(1) as string
    osheet = thiscomponent.sheets(0)

    with aFilterFields3(0)
        .Connection = com.sun.star.sheet.FilterConnection.AND
        .Operator = 2 'Equal
    end with
    
    for i = 0 to 1
        ocell = osheet.getcellbyposition(i+1,0)'Eingabezellen
        aFilterFieldValue(i).StringValue = ocell.string
    next i

    aFilterFields3(0).Values = aFilterFieldValue
    odatabaserange = thiscomponent.databaseranges(0)
    oFilterDescriptor = odatabaserange.FilterDescriptor
    oFilterDescriptor.setFilterFields3(aFilterFields3)
    odatabaserange.refresh
end sub
Das war nicht einfach, weil es inzwischen drei Arten vom "TableFilterField" gibt.
Siehe auch Beispieldatei anbei.
EDIT: In OOo und AOO gibt es kein "com.sun.star.sheet.TableFilterField3" da funktioniert dies nicht
Gruß R

Re: Autofilter Kriterien via Makro setzen

Verfasst: Mo 15. Apr 2013, 18:42
von MacroDevil
Hallo F3K Total!

Ich habe gar nicht mehr mit einer Antwort, geschweige denn Lösung, gerechnet.
Durfte mich jedoch auch nicht beschweren, da ich selber hier noch keinem mit Rat oder Tat helfen konnte.

Dein Makro funktioniert prächtig.

Vielen Dank für die Mühe.

Gruß Klaus

Re: Autofilter Kriterien via Makro setzen

Verfasst: Mi 17. Jan 2018, 22:23
von JakobMeier
Hallo F3K Total,

auch mir hat deine Antwort geholfen, vielen Dank!

Re: Autofilter Kriterien via Makro setzen

Verfasst: Mi 21. Nov 2018, 17:57
von F3K Total
Hallo zusammen,
ich habe keine Ahnung weswegen der gestrige Thread an dieser Stelle verschwunden ist :shock: :shock: :shock:
Zufälligerweise hatte ich ihn auf meinem Smartphone angezeigt, er war noch sichtbar, so dass ich folgenden Screenshot herstellen konnte:
verschwundene_Beiträge.jpg
verschwundene_Beiträge.jpg (974.67 KiB) 3499 mal betrachtet
Sehr suspekt.

Re: Autofilter Kriterien via Makro setzen

Verfasst: Mi 21. Nov 2018, 17:59
von F3K Total
anbei nochmal die beiden Varianten der Dateien.
Gruß R