Hallo Stephan,
ich rauf mir noch aus lauter Verzweiflung hier die Haare ausm Koppe. Wetter geht mir tierisch aufm S..., und unsere Zentralheizung ist nur noch ein Schatten seiner selbst, und das bei dem Wetter, grrrrr-brrr! So, den Frust musste ich erstmal Los werden.
Augenscheinlich geht das mit einem Standardfilter nicht, es sollte aber mit einem Spezialfilter gehen, leider muß ich zunächst passen was den dafür nötigen Code betrifft.
Da hatte ich heute Mittag auch schon mal kurz reingeschaut, genauer gesagt in das dementsprechende Dialogfenster. Aber auch nur ein Blick, und schon war ich wieder raus. Ich hatte mir da wohl zu dem Zeitpunkt etwas erhofft zu sehen, was es nicht zu sehen gibt. Irgendwas in der Richtung von "Formeln abwählen", oder so ähnliches. Aber das Dialogfenster zeigt ja auch nicht die ganze Wahrheit, denn egal ob beim Standardfilter oder beim Spezialfilter kann man per Makro nicht nur Spalten, sondern auch Zeilen filtern, was nirgend im Fenster zu sehen ist.
Raten würde ich Dir in Deiner Datei zunächst einmal händisch zu prüfen ob Du einen entsprechenden Spezialfilter einrichten kannst, das hätte den Vorteil dann zu wissen das es überhaupt geht. Wenn das der Fall ist sollte es eigentlich auch mit Code gehen und man muß dann nochmal darüber nachdenken.
Ja, das werd ich mal testen. Auch wenn ich mir ziemlich sicher bin das es mir nicht helfen wird. Außer, das ich allgemein was über den Spezialfilter lernen kann, da ich noch nie mit ihm gearbeitet habe.
Andererseits verstehe ich aber auch nicht so ganz was bei einer Formel =WENN(X1<>"";X1;"") nicht mit Standardfilter gehen könnte, denn das Ergebnis ist doch immer entweder Zahl oder Text.?
Ich weiß jetzt nicht ob ich aus lauter Frust mich noch immer nicht richtig ausgedrückt habe, oder ob Du etwas nicht richtig verstehst. Denn wenn in der Spalte X irgendwelche Daten stehen (oder nicht), egal ob Text oder Werte, und die Spalte A mit der zitierten Formel gefiltert werden soll, dann geht das nicht. Zumindest wenn man bei Filterkriterien die Einstellung bei Wert auf "nicht leer" setzt. Viele Möglichkeiten gibt es jas nicht bei Wert.
Du hast mich da wohl auf eine Idee gebracht, die ich auch schon in der deutschen Übersetzung von Andrew Pitonyak gelesen hatte, die aber leider nicht wie erhofft funktioniert. Die Rede ist von
IsNumeric. Hier mal der angepasste Code
Code: Alles auswählen
oBereichAlleDaten = oQuelle.getCellRangeByName("B1:B1000")
oFilterBeschreib = oBereichAlleDaten.createFilterDescriptor (True)
oFilterFeld = createUnoStruct("com.sun.star.sheet.TableFilterField")
With oFilterFeld
.Operator = com.sun.star.sheet.FilterOperator.NOT_EMPTY
.IsNumeric = False ' <= hinzugekommen
.StringValue = ".*" ' <= hinzugekommen
End With
oFilterBeschreib.setFilterFields(Array(oFilterFeld))
oFilterBeschreib.CopyOutputData = True
oFilterBeschreib.UseRegularExpressions = True ' <= hinzugekommen
oZielCelle = oCSV.getCellByPosition(20, iLetzteZelle + iCellIDX)
oFilterBeschreib.OutputPosition = oZielCelle.CellAddress
oBereichAlleDaten.filter(oFilterBeschreib)
Ich weiß jetzt aber noch nicht ob ich vielleicht die Reihenfolge im Code irgendwie ändern muss, denn das habe ich noch nicht getestet.
Wie auch immer. Für heute ist Feierabend.
Gruß
balu