Ich habe das Makro unten für mehrere Filter .
Wenn Sie drei Kriterien in die "C" -Spalte von Filter 2 eingeben, funktioniert es nicht richtig .
wenn Sie aber nur zwei Kriterien in die "C" -Spalte von Filter 2 eintragen, dann funktioniert es ja richtig .
Der letzte Filter 12 funktioniert nicht mit dem Nummernkriterium in Spalte "M" .
Code: Alles auswählen
Option Explicit
Sub Erweiterter_Filter()
const ZONE1 = "A3:CA5000"
const CELL2 = "A1"
dim oDoc as object, oFeuille1 as object, oFeuille2 as object
dim oRange as object, oDataRange as object
dim oCelDest as object ' cellule de destination
dim i as integer, feuille2 as string
dim oFiltreDsc as object
dim operateur as long, nValue as currency
dim tArgs(5) As New com.sun.star.sheet.TableFilterField
oDoc = thisComponent
oFeuille1 = oDoc.Sheets.getByName("2.1Pedidos para Fat")
oFeuille2 = oDoc.Sheets.getByName("Pedidos_Pendentes")
oRange = oFeuille1.getCellRangeByName(ZONE1)
oFiltreDsc = oRange.createFilterDescriptor(true)
'spalte A
tArgs(0).Field = 0
tArgs(0).IsNumeric = false
tArgs(0).Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL
tArgs(0).StringValue = ".*vazio.*"
'spalte C
tArgs(1).Field = 2
tArgs(1).Connection = com.sun.star.sheet.FilterConnection.AND
tArgs(1).IsNumeric = false
tArgs(1).Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL
tArgs(1).StringValue = ".*" & "A5" & ".*"
tArgs(2).Field = 2
tArgs(2).IsNumeric = false
tArgs(2).Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL
tArgs(2).StringValue = ".*" & "A9" & ".*"
tArgs(2).Connection = com.sun.star.sheet.FilterConnection.AND
tArgs(3).Field = 2
tArgs(3).IsNumeric = false
tArgs(3).Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL
tArgs(3).StringValue = ".*" & "A0035" & ".*"
tArgs(3).Connection = com.sun.star.sheet.FilterConnection.AND
'spalte D
tArgs(4).Field = 3
tArgs(4).Connection = com.sun.star.sheet.FilterConnection.AND
tArgs(4).IsNumeric = false
tArgs(4).Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL
tArgs(4).StringValue = ".*" & "ELASTICO" & ".*"
'spalte M
tArgs(5).Field = 12
tArgs(5).Connection = com.sun.star.sheet.FilterConnection.AND
tArgs(5).IsNumeric = true
tArgs(5).Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL
tArgs(5).NumericValue = 1
'Destination du résultat
oCelDest = oFeuille2.getCellRangeByName(CELL2)
with oFiltreDsc
.ContainsHeader = true
.CopyOutputData = true
.OutputPosition = oCelDest.CellAddress
.UseRegularExpressions = true
.setFilterFields(tArgs())
end with
oRange.filter(oFiltreDsc)
oDoc.currentController.setActiveSheet(oFeuille2)
End Sub