BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Autofilter Kriterien via Makro setzen

Alles zur Programmierung im LibreOffice.
Antworten
MacroDevil
Beiträge: 2
Registriert: Mo 31. Dez 2012, 14:07

Autofilter Kriterien via Makro setzen

Beitrag von MacroDevil » Mo 31. Dez 2012, 14:44

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

F3K Total
Beiträge: 2410
Registriert: So 10. Apr 2011, 10:10

Re: Autofilter Kriterien via Makro setzen

Beitrag von F3K Total » Sa 13. Apr 2013, 08:39

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
Dateianhänge
doubleAutoFilter.ods
(13.29 KiB) 442-mal heruntergeladen
Windows 10: AOO, LO Linux Mint: AOO, LO

MacroDevil
Beiträge: 2
Registriert: Mo 31. Dez 2012, 14:07

Re: Autofilter Kriterien via Makro setzen

Beitrag von MacroDevil » Mo 15. Apr 2013, 18:42

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

JakobMeier
Beiträge: 1
Registriert: Mi 17. Jan 2018, 22:17

Re: Autofilter Kriterien via Makro setzen

Beitrag von JakobMeier » Mi 17. Jan 2018, 22:23

Hallo F3K Total,

auch mir hat deine Antwort geholfen, vielen Dank!

F3K Total
Beiträge: 2410
Registriert: So 10. Apr 2011, 10:10

Re: Autofilter Kriterien via Makro setzen

Beitrag von F3K Total » Mi 21. Nov 2018, 17:57

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) 2758 mal betrachtet
Sehr suspekt.
Windows 10: AOO, LO Linux Mint: AOO, LO

F3K Total
Beiträge: 2410
Registriert: So 10. Apr 2011, 10:10

Re: Autofilter Kriterien via Makro setzen

Beitrag von F3K Total » Mi 21. Nov 2018, 17:59

anbei nochmal die beiden Varianten der Dateien.
Gruß R
Dateianhänge
8FachSpezialFilter_ganze_strings_finden.ods
(36.86 KiB) 193-mal heruntergeladen
8FachSpezialFilter.ods
(37 KiB) 202-mal heruntergeladen
Windows 10: AOO, LO Linux Mint: AOO, LO

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten