Autofilter

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Autofilter

ooops

von Niels » Mo, 18.10.2004 08:54

Stephan hat geschrieben:durchsuche das Forum hier nach:

GotoEndOfUsedArea

es gibt mehre Threads an denen auch ich mitgeschrieben habe
:oops: Und an einem habe ich sogar mitgeschrieben und Deine Antwort sicher auch gelesen :oops: !
Daher noch einmal ein besonderes Dankeschön für Deine Hilfen, trotz geistigen Tiefflugs meinerseits. :lol: .

Ciao
Niels

so gehts

von Niels » So, 17.10.2004 23:32

Dies ist nicht universell, erschlägt aber mein Problem:

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
Ä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

von Stephan » So, 17.10.2004 23:02

nur in Kürze (ohne das ich etwas getestet habe):
denn nun weiß ich noch nicht, wie ich ohne Schleife ermitteln soll, wo der Datenbereich zu Ende ist
durchsuche das Forum hier nach:

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

von Niels » So, 17.10.2004 22:11

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

@Stephan PS

von Niels » So, 17.10.2004 21:50

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.
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.

Ciao
Niels

@Stephan

von Niels » So, 17.10.2004 21:25

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:

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
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

von Stephan » So, 17.10.2004 20:00

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:

Code: Alles auswählen

dispatcher.executeDispatch(document, ".uno:DataFilterStandardFilter", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:FilterExecute", "", 0, Array())
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

Autofilter

von Niels » So, 17.10.2004 14:24

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

Nach oben