Autofilter
Moderator: Moderatoren
Autofilter
Hallo zusammen,
ich habe zähneknirschend gerade mal wieder Excel gestartet, da mir folgendes in Calc nicht gelungen ist (Excel 2min.):
Ich habe eine Reihe von Standardtexten in Spalte B. Die gehe ich durch und schreibe in Spalte A eine Nummer, an welcher Position im Ergebnisdokument diese Zeile stehen soll. Dann gehe ich auf Daten - sortieren - nach Spalte A und dann auf Filter - Autofilter - Spalte A nicht leere - und scon habe ich ein schickes Dokument.
Nun soll das aber aml wieder für DAU´s sein, also habe ich dei Bearbeitungsschritte in einem Makro aufgezeichnet doch Calc fliegt mir beim Ausführen um die Ohren. Das Problem liegt beim Filter.
Nun könnte ich erklären, dass man auf das Filtersymbol klicken soll und den Punkt nicht leere dort asuwählen soll, aber den gibt es nicht. In Excel schon, aber da läuft das Makro auch.
Also viel Text um eine kurze Frage: Bekomme ich in die DropDown-Auswahl der Autofilter benutzerspezifische Filtereinstellungen reingebastelt? Oder hat jemand für mich einen eleganterne Weg.
Danke
Niels
ich habe zähneknirschend gerade mal wieder Excel gestartet, da mir folgendes in Calc nicht gelungen ist (Excel 2min.):
Ich habe eine Reihe von Standardtexten in Spalte B. Die gehe ich durch und schreibe in Spalte A eine Nummer, an welcher Position im Ergebnisdokument diese Zeile stehen soll. Dann gehe ich auf Daten - sortieren - nach Spalte A und dann auf Filter - Autofilter - Spalte A nicht leere - und scon habe ich ein schickes Dokument.
Nun soll das aber aml wieder für DAU´s sein, also habe ich dei Bearbeitungsschritte in einem Makro aufgezeichnet doch Calc fliegt mir beim Ausführen um die Ohren. Das Problem liegt beim Filter.
Nun könnte ich erklären, dass man auf das Filtersymbol klicken soll und den Punkt nicht leere dort asuwählen soll, aber den gibt es nicht. In Excel schon, aber da läuft das Makro auch.
Also viel Text um eine kurze Frage: Bekomme ich in die DropDown-Auswahl der Autofilter benutzerspezifische Filtereinstellungen reingebastelt? Oder hat jemand für mich einen eleganterne Weg.
Danke
Niels
Wer lesen kann ist klar im Vorteil.
Hallo Niels,
entweder erst Autofilter setzen und dann im Dropdown "Standard" wählen und Deinen Parameter eingeben oder gleich Standardfilter setzen. In beiden Fällen ist "nicht leer" auswählbar. Bei mir funktioniert das Filtern auch.
Ich kann ein Makro aufzeichnen und dieses führt zum Fehler wie Du ihn beschreibst, der Grund ist offensichtlich das hier:
für die beiden Arrays keine Wertsetzungen aufgezeichnet werden. Ich bin leider überfragt was eingetragen werden muß sonst könntest Du das per Hand tun und das Makro würde laufen.
Ich habe mal im englischen Forum gesucht:
http://www.oooforum.org/forum/viewtopic ... ght=filter
http://www.oooforum.org/forum/viewtopic ... ght=filter
http://www.oooforum.org/forum/viewtopic ... ght=filter
http://www.oooforum.org/forum/viewtopic ... ght=filter
http://www.oooforum.org/forum/viewtopic.php?t=5096
Ich habe das nicht detailliert durchgesehen vielleicht kannst Du dort etwas finden (ich weiß nicht ob Du etwas englisch kannst, aber der code ist ja lesbar). Falls Du etwas herausfindest wäre es nennt wenn Du das hier postest.
Gruß
Stephan
entweder erst Autofilter setzen und dann im Dropdown "Standard" wählen und Deinen Parameter eingeben oder gleich Standardfilter setzen. In beiden Fällen ist "nicht leer" auswählbar. Bei mir funktioniert das Filtern auch.
Ich kann ein Makro aufzeichnen und dieses führt zum Fehler wie Du ihn beschreibst, der Grund ist offensichtlich das hier:
Code: Alles auswählen
dispatcher.executeDispatch(document, ".uno:DataFilterStandardFilter", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:FilterExecute", "", 0, Array())
Ich habe mal im englischen Forum gesucht:
http://www.oooforum.org/forum/viewtopic ... ght=filter
http://www.oooforum.org/forum/viewtopic ... ght=filter
http://www.oooforum.org/forum/viewtopic ... ght=filter
http://www.oooforum.org/forum/viewtopic ... ght=filter
http://www.oooforum.org/forum/viewtopic.php?t=5096
Ich habe das nicht detailliert durchgesehen vielleicht kannst Du dort etwas finden (ich weiß nicht ob Du etwas englisch kannst, aber der code ist ja lesbar). Falls Du etwas herausfindest wäre es nennt wenn Du das hier postest.
Gruß
Stephan
@Stephan
Danke,
leider stehe ich mit dem ganzen UNO-Zeug total auf Kriegsfuss, da ich es lieber in ordentlichem, verständlichen Basic abbilden würde. Das liegt aber sicher voll an mir, da sich dies mit der ganzen Vererbungskacke so verhält. Ich komme halt aus dem schönen, objektfreien Basic unter DOS oder schlimmer. Das geht mir auch in VB so, nur habe ich hier, wie bei VBA den Vorteil eines ordentlichen Editors, der mir alle Objekteigenschaften anzeigt, sobald ich den Punkt setze - das macht die Sache doch viel einfacher, wenn alles andere auch besser sein mag.
Da sieht es halt so aus und läuft prima:
Das kann ich lesen, wenn ich mich anstrenge, und auch editieren, bei UNO stehe ich im Wald und die Rehe grinsen mich blöd an.
Na ja, ich habe ja mit meinem gefährlichen Halbwissen schon ganz andere Sachen hinbekommen und werde so mal wieder etwas testen - vielleicht klappt es ja.
Ciao
Niels
leider stehe ich mit dem ganzen UNO-Zeug total auf Kriegsfuss, da ich es lieber in ordentlichem, verständlichen Basic abbilden würde. Das liegt aber sicher voll an mir, da sich dies mit der ganzen Vererbungskacke so verhält. Ich komme halt aus dem schönen, objektfreien Basic unter DOS oder schlimmer. Das geht mir auch in VB so, nur habe ich hier, wie bei VBA den Vorteil eines ordentlichen Editors, der mir alle Objekteigenschaften anzeigt, sobald ich den Punkt setze - das macht die Sache doch viel einfacher, wenn alles andere auch besser sein mag.
Da sieht es halt so aus und läuft prima:
Code: Alles auswählen
Sub Makro1()
Range("A3").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Sort Key1:=Range("A4"), Order1:=xlAscending, Key2:=Range("B4") _
, Order2:=xlAscending, Key3:=Range("C4"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
xlSortNormal
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="<>"
End Sub
Na ja, ich habe ja mit meinem gefährlichen Halbwissen schon ganz andere Sachen hinbekommen und werde so mal wieder etwas testen - vielleicht klappt es ja.
Ciao
Niels
Wer lesen kann ist klar im Vorteil.
@Stephan PS
Das funktioniert bei mir auch, aber im Excel steht im DropDown des Autofilters gleich "leer" und "nicht leer". Das sollen DAU´s bedienen (u.a. meine Frau), da ist der Umweg über Standard tötlich. Daher dachte ich, man kann wenigstens neue Auswahlmöglichkeiten in´s DropDown einbauen.Stephan hat geschrieben:entweder erst Autofilter setzen und dann im Dropdown "Standard" wählen und Deinen Parameter eingeben oder gleich Standardfilter setzen. In beiden Fällen ist "nicht leer" auswählbar. Bei mir funktioniert das Filtern auch.
Ciao
Niels
Wer lesen kann ist klar im Vorteil.
Also, das funktioniert scheinbar:
http://www.oooforum.org/forum/viewtopic ... ght=filter
Und mit Hilfe dieser Links verstehe ich es sicher auch irgendwann:
http://api.openoffice.org/docs/common/r ... Field.html
http://www.bcwin.ch/ooo/basic/calc/calc.html
http://www.dannenhoefer.de/faqstarbasic/
Allerdings eher später als früher
, denn nun weiß ich noch nicht, wie ich ohne Schleife ermitteln soll, wo der Datenbereich zu Ende ist. Zudem weiß ich nicht, wie man wieder alles anzeigt.
Ciao
Niels
http://www.oooforum.org/forum/viewtopic ... ght=filter
Und mit Hilfe dieser Links verstehe ich es sicher auch irgendwann:
http://api.openoffice.org/docs/common/r ... Field.html
http://www.bcwin.ch/ooo/basic/calc/calc.html
http://www.dannenhoefer.de/faqstarbasic/
Allerdings eher später als früher

Ciao
Niels
Wer lesen kann ist klar im Vorteil.
nur in Kürze (ohne das ich etwas getestet habe):
GotoEndOfUsedArea
es gibt mehre Threads an denen auch ich mitgeschrieben habe
in jedem Fall indem Du den Filter wieder entfernst, das sollte rein prinzipiell sowas sein wie (...).applyfilter = false oder remove Filter oder "so in der Art". Ich habe weder einen Code vor augen noch etwas getestet aber so wäre das Prinzip.
Gruß
Stephan
durchsuche das Forum hier nach:denn nun weiß ich noch nicht, wie ich ohne Schleife ermitteln soll, wo der Datenbereich zu Ende ist
GotoEndOfUsedArea
es gibt mehre Threads an denen auch ich mitgeschrieben habe
Zudem weiß ich nicht, wie man wieder alles anzeigt.
in jedem Fall indem Du den Filter wieder entfernst, das sollte rein prinzipiell sowas sein wie (...).applyfilter = false oder remove Filter oder "so in der Art". Ich habe weder einen Code vor augen noch etwas getestet aber so wäre das Prinzip.
Gruß
Stephan
so gehts
Dies ist nicht universell, erschlägt aber mein Problem:
Ähnlich macht es auch das von mir als funktionierend getestete Beispiel. jedoch blendet dies nicht wieder die Zeilen ein, wenn die Zelle der Filterspalte in einer Zeile leer ist. Es ist auch etwas krank, einen Filter zu bauen, der auf keinen Fall zutrifft, um die Filterung aufzuheben.
So, das war es für heute.
@Stephan: Ich werde in den nächsten Tagen noch einmal das Forum nach den von Dir genannten Stichwörtern durchforsten, dann kann man vielleicht zum Filtern das Beispiel aus dem internationalen Forum nehmen und zum Ausschalten eine komplette Selektion des Datenbereiches und ein IsVisible=True auf die Zeilen.
Ciao
Niels
Code: Alles auswählen
sub Ausblenden
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Dim i As Integer
Dim Row As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
i=1
do
Cell = Sheet.getCellByPosition(1,i)
if Cell.String = "" then exit do
Cell = Sheet.getCellByPosition(0,i)
if Cell.String = "" then
Row = Sheet.Rows(i)
Row.IsVisible = False
end if
i=i+1
loop
end sub
sub Einblenden
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Dim i As Integer
Dim Row As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
i=1
do
Row = Sheet.Rows(i)
Row.IsVisible = True
Cell = Sheet.getCellByPosition(1,i)
if Cell.String = "" then exit do
i=i+1
loop
end sub
So, das war es für heute.
@Stephan: Ich werde in den nächsten Tagen noch einmal das Forum nach den von Dir genannten Stichwörtern durchforsten, dann kann man vielleicht zum Filtern das Beispiel aus dem internationalen Forum nehmen und zum Ausschalten eine komplette Selektion des Datenbereiches und ein IsVisible=True auf die Zeilen.
Ciao
Niels
Wer lesen kann ist klar im Vorteil.
ooops
Stephan hat geschrieben:durchsuche das Forum hier nach:
GotoEndOfUsedArea
es gibt mehre Threads an denen auch ich mitgeschrieben habe


Daher noch einmal ein besonderes Dankeschön für Deine Hilfen, trotz geistigen Tiefflugs meinerseits.

Ciao
Niels
Wer lesen kann ist klar im Vorteil.