[Gelöst] CALC: Autofilter ändern/ansteuern?

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

Moderator: Moderatoren

f.ohrenwurm
Beiträge: 4
Registriert: Do, 27.12.2012 15:47

[Gelöst] CALC: Autofilter ändern/ansteuern?

Beitrag von f.ohrenwurm »

Hallo,

ich habe einige Tabellen, die einen Autofilter aktiv haben. Zur leichteren Auswertung dieser Tabellen (einige huntert Zeilen) habe ich mir bereits ein Makro gebaut, das mir nicht benötigte Spalten bei Bedarf ein-/ausblendet. Nun möchte ich aber das Makro so erweitern, dass ich auch noch den Autofilter ansteuern kann. Ich möchte z.B. in Spalte "M" nach der Zahl "1" filtern, so dass alle anderen Werte ausgeblendet werden. Manuell ist das ja kein Problem, nur wie kann ich das per Makro machen? Bedingung: der Autofilter muss aktiv bleiben, weil dieser während der Auswertung benötigt wird und ein manuelles Aktivieren oder Deaktivieren des Autofilters zu viel Aufwand bedeuten würde.

Im angehängten Screenshot habe ich markiert, was ich gerne per Makro im Autofilter aktivieren lassen will.

Natürlich benötige ich dann auch noch die Möglichkeit, per Makro später wieder "alles" anzuzeigen.

Kann mir bitte jemand Infos geben, ob und wie das geht?

Habe hier im Forum und auch auf den englischsprachigen Foren und Wikis zu OpenOffice oder LibreOffice leider nichts hierüber gefunden. Google-Suche die letzten zwei Tage hat auch nichts gebracht. Nur Makros, die den Autofilter für einen Bereich aktivieren. Oder Makros, die einen Standardfilter aktivieren. Aber keine Infos darüber, wie man per Makro einen vorhandenen Autofilter ansteuert.


Gruß
Franz


Thema verschoben—lorbass, Mod

Dateianhänge
Screenshot des Autofilters
Screenshot des Autofilters
OO.PNG (44.3 KiB) 2401 mal betrachtet
Zuletzt geändert von f.ohrenwurm am Do, 27.12.2012 21:28, insgesamt 2-mal geändert.
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: CALC: Autofilter ändern/ansteuern?

Beitrag von F3K Total »

Hallo Franz,
nach längerer Suche sowie try and error, bin ich zu folgendem Code gekommen, um z.B. die ersten zwei Spalten, A nach "A" und B nach "1" zu filtern:

Code: Alles auswählen

Sub S_set_autofilter
    dim aFilterFields(1) as new com.sun.star.sheet.TableFilterField
    with aFilterFields(0)
    '     .connection = "AND"
         .Field = 0
         .stringvalue = "A"
         .Operator = 2
    end with
    with aFilterFields(1)
    '     .connection = "AND"
         .Field = 1
         .stringvalue = "1"
         .Operator = 2 
    end with
    odatabaserange = thiscomponent.databaseranges(0)
    oFilterDescriptor = odatabaserange.FilterDescriptor
    oFilterDescriptor.setFilterFields(aFilterFields)
    odatabaserange.refresh
End Sub
Viel Erfolg damit
Gruß R
f.ohrenwurm
Beiträge: 4
Registriert: Do, 27.12.2012 15:47

Re: CALC: Autofilter ändern/ansteuern?

Beitrag von f.ohrenwurm »

Hallo R,

danke für die Antwort.
Leider kommt bei mir nur eine Fehlermeldung, siehe angehängter Screenshot.
Habe jetzt über eine Stunde recherchiert und herumprobiert, kann aber nicht herausfinden, warum "odatabaserange = thiscomponent.databaseranges(0)" bemängelt wird.

Woran kann das liegen?

Ich werde jetzt weitersuchen, aber vielleicht kannst Du mir noch einen Tipp geben, dann geht es schneller.

Gruß
Franz
Dateianhänge
Fehlermeldung
Fehlermeldung
OO_Fehler.PNG (22 KiB) 2365 mal betrachtet
f.ohrenwurm
Beiträge: 4
Registriert: Do, 27.12.2012 15:47

Re: CALC: Autofilter ändern/ansteuern?

Beitrag von f.ohrenwurm »

Hallo R,

habe die Ursache gefunden:

Bei mir war in der Calc-Datei noch kein Datenbereich festgelegt. Der Autofilter legt scheinbar nicht automatisch einen Datenbereich fest.

Nachdem ich über Daten -> Bereich festlegen dem Autofilterbereich einen Namen gab, funktionierte Dein Makro einwandfrei.

Kannst Du mir noch einen Tipp geben, wie ich per Makro den Filter in diesen Spalten wieder zurücksetze?

Code: Alles auswählen

.stringvalue = "*"
oder

Code: Alles auswählen

.stringvalue = ""
bringt nicht das gewünschte Ergebnis.

Gruß
Franz
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: CALC: Autofilter ändern/ansteuern?

Beitrag von F3K Total »

wenn du noch deinen Bereich austauschst ...

Code: Alles auswählen

Sub S_remove_autofilter
    odatabaserange = thiscomponent.databaseranges(0)
    oFilterDescriptor = odatabaserange.FilterDescriptor
    oFilterDescriptor.setFilterFields(array())
    odatabaserange.referredcells.Rows.Isvisible = True
    odatabaserange.refresh
end sub
f.ohrenwurm hat geschrieben:Der Autofilter legt scheinbar nicht automatisch einen Datenbereich fest.
... bei mir schon ...
Gruß R
f.ohrenwurm
Beiträge: 4
Registriert: Do, 27.12.2012 15:47

Re: CALC: Autofilter ändern/ansteuern?

Beitrag von f.ohrenwurm »

Perfekt!!!

Super, ich freue mich sehr über Deine Hilfe. Vielen Dank.
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: [Gelöst] CALC: Autofilter ändern/ansteuern?

Beitrag von F3K Total »

Bitte, gerne ...
Gruß R
willi64de
*
Beiträge: 10
Registriert: Fr, 19.10.2012 08:20

Re: [Gelöst] CALC: Autofilter ändern/ansteuern?

Beitrag von willi64de »

Danke! :D das klappt auch bei mir prima, nachdem ich den Bereich festgelegt hatte
Antworten