Autofilter Kriterien via Makro setzen
Verfasst: 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
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