Wie kann ich das per Makro erledigen? Und wie kann ich dann wählen nach welchem Kriterium er filtert?
Danke !
Gruß, Zoidberg
AutoFilter per Makro ein und ausschalten
Moderator: Moderatoren
Hallo Zoidberg,
ich weis nicht ob das Thema noch Aktuell ist. Ich weis auch nicht ob dir dies weiterhilft: (Ausschnitt aus Developers Guide)
und das ganze bei Filterkriterium aus einer Zelle:
Kann auch sein, dass du dies schon hast und statt dem Filter unbedingt den Autofilter benötigst.
Wie auch immer einen Versuch ist es wert.
Timon
ich weis nicht ob das Thema noch Aktuell ist. Ich weis auch nicht ob dir dies weiterhilft: (Ausschnitt aus Developers Guide)
Code: Alles auswählen
// --- filter für zweite Spalte >= 1998 ---
com.sun.star.sheet.XSheetFilterable xFilter = (com.sun.star.sheet.XSheetFilterable)
UnoRuntime.queryInterface(com.sun.star.sheet.XSheetFilterable.class, xRange);
com.sun.star.sheet.XSheetFilterDescriptor xFilterDesc =
xFilter.createFilterDescriptor(true);
com.sun.star.sheet.TableFilterField[] aFilterFields =
new com.sun.star.sheet.TableFilterField[1];
aFilterFields[0] = new com.sun.star.sheet.TableFilterField();
aFilterFields[0].Field = 1;
aFilterFields[0].IsNumeric = true;
aFilterFields[0].Operator = com.sun.star.sheet.FilterOperator.GREATER_EQUAL;
aFilterFields[0].NumericValue = 1998;
xFilterDesc.setFilterFields(aFilterFields);
com.sun.star.beans.XPropertySet xFilterProp = (com.sun.star.beans.XPropertySet)
UnoRuntime.queryInterface(com.sun.star.beans.XPropertySet.class, xFilterDesc);
xFilterProp.setPropertyValue("ContainsHeader", new Boolean(true));
xFilter.filter(xFilterDesc);
Code: Alles auswählen
// --- do the same filter as above, using criteria from a cell range ---
com.sun.star.table.XCellRange xCritRange = xSheet.getCellRangeByName("B27:B28");
com.sun.star.sheet.XCellRangeData xCritData = (com.sun.star.sheet.XCellRangeData)
UnoRuntime.queryInterface(com.sun.star.sheet.XCellRangeData.class, xCritRange);
Object[][] aCritValues = {{"Year"}, {">= 1998"}};
xCritData.setDataArray(aCritValues);
com.sun.star.sheet.XSheetFilterableEx xCriteria = (com.sun.star.sheet.XSheetFilterableEx)
UnoRuntime.queryInterface(com.sun.star.sheet.XSheetFilterableEx.class, xCritRange);
xFilterDesc = xCriteria.createFilterDescriptorByObject(xFilter);
if (xFilterDesc != null)
xFilter.filter(xFilterDesc);
Wie auch immer einen Versuch ist es wert.
Timon