Hallo,
ich habe versucht, ein Makro aufzuzeichnen, mit dem die Anwendung des Standard-Filters automatisiert werden soll.
Es gibt da die Spalte I.
Die meißten Zellen sind leer, aber manche enthalten ein x.
Die Zeilen mit dem x in Spalte I sollen ausgeblendet werden.
Nun ja, wenn ich versuche, das Makro anzuwenden, stürzt OO ab.
Ich habe im Makro-Editor nachgeschaut und mir scheint, daß das Filtern gar nicht aufgezeichnet wird.
Ich schaffe es zwar, nach einiger Lektüre, den Zellbereich zu selektieren, aber dann ist es schon aus. Ich habe auch in verschiedenen Handbüchern nichts Erhellendes zu diesem Filter gefunden.
Kann mir da jemand weiterhelfen?
Gruß, Hago
Calc Standard-Filter per Makro anwenden
Moderator: Moderatoren
Hallo!
Ich muss gestehen mit dem Filter kenne ich mich auch nicht aus.
Ich hoffe das Makro funktioniert. Ich hatte keine Zeit es zu testen.
Um die Zeilen wieder einzublenden ist das gleiche Makro nötig. Nur bei dem Befehl Zeile.IsVisible ist false durch true zu ersetzen.
Gruß
Charly
Ich muss gestehen mit dem Filter kenne ich mich auch nicht aus.
Für diese Aufgabe hätte ich ein Makro. Spalte I ist die dabei die neunte Spalte mit Index 8.Es gibt da die Spalte I.
Die meißten Zellen sind leer, aber manche enthalten ein x.
Die Zeilen mit dem x in Spalte I sollen ausgeblendet werden
Code: Alles auswählen
Sub Filterein()
Dok = ThisComponent
Controller = Dok.CurrentController
Blatt = Controller.ActiveSheet
Cursor =Blatt.createCursor()
Cursor.GotoEndofUsedArea(True)
EndZeile = Cursor.getRangeAddress.EndRow
For I = 0 To EndZeile
Zelle = Blatt.getCellByPosition(8,I)
Wert = Zelle.String
If Wert = "x" then
Zeile = Blatt.rows(I)
Zeile.IsVisible = False
End If
next
End Sub
Um die Zeilen wieder einzublenden ist das gleiche Makro nötig. Nur bei dem Befehl Zeile.IsVisible ist false durch true zu ersetzen.
Gruß
Charly
Hallo Charly,
Ich danke Dir für den Code.
Leider funktioniert er bis jetzt nicht.
Keine Reaktion, auch keine Fehler.
.....................
For I = 0 To EndZeile
Zelle = Blatt.getCellByPosition(8,I)
Wert = Zelle.String
If Wert = "x" then
Zeile = Blatt.rows(I)
Zeile.IsVisible = False
End If
......................
Wenn ich es recht verstehe, wird I hochgezählt und ist in jedem Durchgang eine Zahl (einen Wert höher als im Durchgang zuvor)
Wenn das stimmt, verstehe ich die Zeile
"Zelle = Blatt.getCellByPosition(8,I)"
nicht so recht. Eine Zelle wird doch immer definiert durch eine Zahl und einen Buchstaben. Wenn I aber eine Zahl ist stehen in der Klammer ja zwei Zahlen... Das bezeichnet doch eigentlich keine Zelle.
Ich habe natürlich etwas rumprobiert, aber ohne Erfolg.
Gruß, Hago
Ich danke Dir für den Code.
Leider funktioniert er bis jetzt nicht.
Keine Reaktion, auch keine Fehler.
.....................
For I = 0 To EndZeile
Zelle = Blatt.getCellByPosition(8,I)
Wert = Zelle.String
If Wert = "x" then
Zeile = Blatt.rows(I)
Zeile.IsVisible = False
End If
......................
Wenn ich es recht verstehe, wird I hochgezählt und ist in jedem Durchgang eine Zahl (einen Wert höher als im Durchgang zuvor)
Wenn das stimmt, verstehe ich die Zeile
"Zelle = Blatt.getCellByPosition(8,I)"
nicht so recht. Eine Zelle wird doch immer definiert durch eine Zahl und einen Buchstaben. Wenn I aber eine Zahl ist stehen in der Klammer ja zwei Zahlen... Das bezeichnet doch eigentlich keine Zelle.
Ich habe natürlich etwas rumprobiert, aber ohne Erfolg.
Gruß, Hago
Hallo Hago!
Das kommt davon wenn man einen Code schreibt und diesen nicht testet.
Ich habe ihn jetzt getestet und hatte zunächst auch keine Reaktion bis ich auf den Fehler gekommen bin. Ich habe in der Spalte I in paar Zeilen ein kleines x geschrieben und nicht gemerkt, dass die Autokorrektur daraus ein großes X gemacht hat.
Ich habe meinen Code neugeschrieben und auch die Ausschaltung des Filters eingebaut. Sind die Zeilen vorhanden werden sie ausgeblendet. Sind sie ausgeblendet werden sie wieder eingeblendet.
gruß
Charly
Das kommt davon wenn man einen Code schreibt und diesen nicht testet.
Ich habe ihn jetzt getestet und hatte zunächst auch keine Reaktion bis ich auf den Fehler gekommen bin. Ich habe in der Spalte I in paar Zeilen ein kleines x geschrieben und nicht gemerkt, dass die Autokorrektur daraus ein großes X gemacht hat.
Eine Zelle kann man mit ihrem Namen aufrufen zB I3 oder mit ihrer Position. Dabei werden die Buchstaben durch Zahlen ersetzt. Die Nummerierung beginnt jedoch mit 0. Das heißt bei dem Klammerwert (8,I) bezieht sich 8 auf die neunte Spalte also I , und die Variable I zählt die Zeilen hoch von Index 0 bis zur letzten benutzten Zeile.Wenn das stimmt, verstehe ich die Zeile
"Zelle = Blatt.getCellByPosition(8,I)"
nicht so recht. Eine Zelle wird doch immer definiert durch eine Zahl und einen Buchstaben. Wenn I aber eine Zahl ist stehen in der Klammer ja zwei Zahlen... Das bezeichnet doch eigentlich keine Zelle.
Ich habe meinen Code neugeschrieben und auch die Ausschaltung des Filters eingebaut. Sind die Zeilen vorhanden werden sie ausgeblendet. Sind sie ausgeblendet werden sie wieder eingeblendet.
Code: Alles auswählen
Sub Filterein_aus()
Dok = ThisComponent
Controller = Dok.CurrentController
Blatt = Controller.ActiveSheet
Cursor =Blatt.createCursor()
Cursor.GotoEndofUsedArea(True)
EndZeile = Cursor.getRangeAddress.EndRow
For I = 0 To EndZeile
Zelle = Blatt.getCellByPosition(8,I)
Wert = Zelle.String
If Wert = "x" or Wert = "X" then
Zeile = Blatt.rows(I)
If Zeile.IsVisible then
Zeile.IsVisible = False
else Zeile.IsVisible = true
end if
End If
next
End Sub
Charly