AutoFilter per Makro ein und ausschalten

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Zoidberg
**
Beiträge: 36
Registriert: Do, 29.01.2004 16:34
Wohnort: Gummersbach

AutoFilter per Makro ein und ausschalten

Beitrag von Zoidberg »

Wie kann ich das per Makro erledigen? Und wie kann ich dann wählen nach welchem Kriterium er filtert?

Danke !

Gruß, Zoidberg
Tim1202
**
Beiträge: 30
Registriert: Sa, 07.05.2005 18:57
Wohnort: Utting

Beitrag von Tim1202 »

Hallo Zoidberg,

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);
und das ganze bei Filterkriterium aus einer Zelle:

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);
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
Antworten