💚 BITTE helfen Sie uns NOCH HEUTE mit einer SPENDE 💚
Helfen Sie das LibreOffice Forum zu erhalten!
> 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
-
- Beiträge: 2
- Registriert: Mo 31. Dez 2012, 14:07
Autofilter Kriterien via Makro setzen
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
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
Hallo Klaus,
kaum wartet man ein viertel Jahr, schwupps, kommt eine Antwort.
Ja, es funktioniert, mit z.B. diesem Makro:
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
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
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) 445-mal heruntergeladen
Windows 10: AOO, LO Linux Mint: AOO, LO
-
- Beiträge: 2
- Registriert: Mo 31. Dez 2012, 14:07
Re: Autofilter Kriterien via Makro setzen
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
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
-
- Beiträge: 1
- Registriert: Mi 17. Jan 2018, 22:17
Re: Autofilter Kriterien via Makro setzen
Hallo F3K Total,
auch mir hat deine Antwort geholfen, vielen Dank!
auch mir hat deine Antwort geholfen, vielen Dank!
Re: Autofilter Kriterien via Makro setzen
Hallo zusammen,
ich habe keine Ahnung weswegen der gestrige Thread an dieser Stelle verschwunden ist
Zufälligerweise hatte ich ihn auf meinem Smartphone angezeigt, er war noch sichtbar, so dass ich folgenden Screenshot herstellen konnte:Sehr suspekt.
ich habe keine Ahnung weswegen der gestrige Thread an dieser Stelle verschwunden ist
Zufälligerweise hatte ich ihn auf meinem Smartphone angezeigt, er war noch sichtbar, so dass ich folgenden Screenshot herstellen konnte:Sehr suspekt.
Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Autofilter Kriterien via Makro setzen
anbei nochmal die beiden Varianten der Dateien.
Gruß R
Gruß R
- Dateianhänge
-
- 8FachSpezialFilter_ganze_strings_finden.ods
- (36.86 KiB) 196-mal heruntergeladen
-
- 8FachSpezialFilter.ods
- (37 KiB) 204-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 ❤️