❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[Gelöst] Zeilen in einer Tabelle per Makro ein-/ausblenden

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Wolfgang
Beiträge: 64
Registriert: Mi 30. Mai 2012, 17:14

Re: Zeilen in einer Tabelle per Makro ein-/ausblenden

Beitrag von Wolfgang » So 22. Mär 2020, 19:10

Hab's gerade ausprobiert. Ist nicht ganz so geeignet. Läuft ziemlich lange und tut leider nicht ganz das erhoffte.


Wenn ich den Makro verstehe, wird ein Gebiet zusammenhänger Zellen gesucht, in denen der Cursor steht. (Ich hoffe, ich blamiere mich jetzt nicht total angesichts meiner Makro-Unkenntnisse...)

Die "Range", in der die Zeichenkette vorkommen kann, ist aber stets dieselbe. nämlich a16:i100. Diese "Range" könnte also zum einen fest verdrahtet werden, zum anderen muss dabei stets nur die Spalte a kontrolliert werden, denn wenn in einer Zelle a16 bis a100 diese Zeichenkette vorkommt, dann kommt sie auch in den Spalten b bis i vor, d.h. die Zeile kann ausgeblendet werden, ohne b bis i betrachten zu müssen.

Helmut_S
* LO-Experte *
Beiträge: 757
Registriert: Di 9. Feb 2016, 19:27

Re: Zeilen in einer Tabelle per Makro ein-/ausblenden

Beitrag von Helmut_S » So 22. Mär 2020, 20:01

Hallo wolfgang, anbei noch ein Vorschlag zum aus- + Einblenden von ganzen Zeilen. Egal ob mit oder ohne Inhalt.
In den Zellen H1 + H2 kannst du die Zeilen einstellen die ausgeblendet werden sollen. Diese werden bei Bedarf dann wieder eingeblendet. Vielleicht kannst du etwas davon verwerten?
Gruß Helmut
Dateianhänge
Zeilen_aus+einblenden.ods
(11.1 KiB) 243-mal heruntergeladen
MX-Linux KDE + Linux-Mint Cinnamon

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Zeilen in einer Tabelle per Makro ein-/ausblenden

Beitrag von F3K Total » Mo 23. Mär 2020, 18:08

Moin Wolfgang,
Wolfgang hat geschrieben:
So 22. Mär 2020, 19:10
Hab's gerade ausprobiert. Ist nicht ganz so geeignet. Läuft ziemlich lange und tut leider nicht ganz das erhoffte.
Was für eine Frechheit! Du schickst ein Dokument, und bittest darum, alle Zellen mit "Dreifachschlange" auszublenden. Ich schicke dir das Dokument geändert so zurück, das es in Sekundenschnelle funktioniert, und du kommst mit unzulänglichen Erklärungen, warum das nicht deinen Erwartungen entspricht, schreibst sogar, das eigentlich ganz andere Zellen überprüft werden müssen als in deinem Beispieldokument. Kopftschüttel.
Was glaubst du eigentlich?
Ist dir bewusst, dass hier freiwillig, private Menschen, anderen in ihrer Freizeit UNENTGELTLICH helfen.
Meinst du, das wäre ein Freibrief deren Hilfe uneingeschränkt in Anspruch nehmen zu dürfen?
Für mich handelst du unverantwortlich, und verschwendest anderer Leute Zeit mit überflüssigen Fragen.
Ich bin raus!
R
Zuletzt geändert von F3K Total am Di 24. Mär 2020, 07:17, insgesamt 1-mal geändert.

r0land
Beiträge: 45
Registriert: Sa 28. Dez 2019, 09:06

Re: Zeilen in einer Tabelle per Makro ein-/ausblenden

Beitrag von r0land » Mo 23. Mär 2020, 20:55

Warst Du zu lange im Forum eingeschlossen.. oder flattert einfach nur das Nervenkostüm angesichts der Corona Krise? ^^

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Zeilen in einer Tabelle per Makro ein-/ausblenden

Beitrag von F3K Total » Mo 23. Mär 2020, 22:22

@r0land:
Du konntest es nicht wissen, aber es geht hier um komplizierte Zusammenhänge. ;)
R

r0land
Beiträge: 45
Registriert: Sa 28. Dez 2019, 09:06

Re: Zeilen in einer Tabelle per Makro ein-/ausblenden

Beitrag von r0land » Di 24. Mär 2020, 03:41

Erst schnauzt Du den TE an und jetzt wirst Du auch noch beleidigend und persönlich. Ach nee, den TE hast Du ja vorher auch schon beleidigt. Mein Fehler.

Bemitleidenswert..

mikele
* LO-Experte *
Beiträge: 1947
Registriert: Mo 1. Aug 2011, 20:51

Re: Zeilen in einer Tabelle per Makro ein-/ausblenden

Beitrag von mikele » Di 24. Mär 2020, 12:12

Hallo,
tourt mal wieder 'runter ...
Es ist eh' schon verwirrend genug.
Erst ging es um leere Zellen, nun um "~~~"
Das Klicken auf "leer" im Autofilter ist zu kompliziert, ein Makro (das programmiert und auch irgendwie gestartet werden will) jedoch nicht ...
Gruß,
mikele

Wolfgang
Beiträge: 64
Registriert: Mi 30. Mai 2012, 17:14

Re: Zeilen in einer Tabelle per Makro ein-/ausblenden

Beitrag von Wolfgang » Mi 25. Mär 2020, 19:40

Es tut mir leid, wenn sich jemand beleidigt fühlt, weil ich sage "tut leider nicht das erhoffte". Diese Äußerung geschah natürlich aus meiner Sichtweise heraus, es sollte keine Herabwürdigung der unterbreiteten Vorschläge sein. Ich habe beim Ausprobieren halt festgestellt, dass diese Art von Makro bei mir leider nicht so läuft, wie es beim Autor anscheinend läuft.

Das wird wohl daran lieben, dass mein Rechner nicht so leistungsfähig ist wie der von F3K, dass die Tabelle, in der das Makro letztendlich eingesetzt werden soll, nicht nur eine Handvoll Zeilen enthält wie die Beispiel-Datei, sondern viel, viel mehr, und dass dadurch die 2 verschachtelte Schleifen den Rechner ein wenig zu sehr fordern. Und natürlich war diese Datei nur als abgespecktes Beispiel gedacht, und ich war der Meinung, das sei klar geworden.

Aber ich habe es jetzt hinbekommen, mit der Makro-Aufzeichung ein zwar nicht so elegantes, dafür aber laufendes Makro für meinen Zweck zu erstellen.

Was die Sache mit dem Autofilter angeht: der funktioniert wirklich nicht so, wie man es erwarten würde, und er funktioniert auch nicht als Reaktion auf die Änderung in einer Zelle. Das habe ich mehrfach ausprobiert, mit Text, mit Zahlen verschiedenen Formates, aber leider alles ohne Erfolgt.

mikele
* LO-Experte *
Beiträge: 1947
Registriert: Mo 1. Aug 2011, 20:51

Re: Zeilen in einer Tabelle per Makro ein-/ausblenden

Beitrag von mikele » Mi 25. Mär 2020, 22:40

Hallo,
dann wäre es ganz hilfreich (gewesen), ein paar mehr Informationen zu geben. Laut Anfangsthread ging es um 100 Zeilen und das ist so das Problem.
Es wäre nun auch schön, wenn du uns die nun funktionierende die Lösung vorstellen würdest.
Gruß,
mikele

Wolfgang
Beiträge: 64
Registriert: Mi 30. Mai 2012, 17:14

Re: Zeilen in einer Tabelle per Makro ein-/ausblenden

Beitrag von Wolfgang » Do 26. Mär 2020, 19:22

Als das Projekt begann, war die Höchstgrenze auch bei 100 Zeilen gesetzt. Aber kein Plan überlebt die Zusammenkunft mit der Realität... So gab es denn plötzlich Spezialfälle, die mehr als 100 Zeilen benötigten. Und so habe ich die Grenze dann auf 1000 hochgezogen.

Dies ist der/die/das Makro, das ich zum Teil aus Vorschlägen aus dem Forum und zum Teil durch Aufzeichnung besteht:

Code: Alles auswählen

sub hide_unhide

thiscomponent.lockControllers

rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

doc = ThisComponent
sheet = doc.CurrentController.ActiveSheet
range = sheet.getCellRangeByName("A17:A1020")
range.Rows.isVisible = True


 oSheet = thisComponent.currentController.activeSheet
 thiscomponent.lockControllers
 thiscomponent.calculateall
 oSheet.Rows.OptimalHeight = true
 thiscomponent.unlockControllers


rem ----------------------------------------------------------------------
dim args1(20) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 1
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.SearchFiltered"
args1(4).Value = false
args1(5).Name = "SearchItem.Backward"
args1(5).Value = false
args1(6).Name = "SearchItem.Pattern"
args1(6).Value = false
args1(7).Name = "SearchItem.Content"
args1(7).Value = false
args1(8).Name = "SearchItem.AsianOptions"
args1(8).Value = false
args1(9).Name = "SearchItem.AlgorithmType"
args1(9).Value = 0
args1(10).Name = "SearchItem.SearchFlags"
args1(10).Value = 65552
args1(11).Name = "SearchItem.SearchString"
args1(11).Value = "~~~"
args1(12).Name = "SearchItem.ReplaceString"
args1(12).Value = ""
args1(13).Name = "SearchItem.Locale"
args1(13).Value = 255
args1(14).Name = "SearchItem.ChangedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.DeletedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.InsertedChars"
args1(16).Value = 2
args1(17).Name = "SearchItem.TransliterateFlags"
args1(17).Value = 1280
args1(18).Name = "SearchItem.Command"
args1(18).Value = 1
args1(19).Name = "SearchItem.SearchFormatted"
args1(19).Value = false
args1(20).Name = "SearchItem.AlgorithmType2"
args1(20).Value = 1

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Visible"
args2(0).Value = false

dispatcher.executeDispatch(document, ".uno:SearchResultsDialog", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:HideRow", "", 0, Array())

thiscomponent.unlockControllers

End Sub
Als erstes blendet das Makro alle Zellen wieder ein, so dass die bei einem vorherigen Lauf ausgeblendeten Zeilen wieder zu sehen sind.

Dann wird die Höhe aller Zellen angepasst. Eine der Spalten der Tabelle wird von einer Kombination aus INDEX und INDIREKT (also der flexiblere SVERWEIS) mit Text aus einer anderen Tabelle gefüttert. Diese Spalte muss aber für den Druck/Export eine feste Breite haben. Die Höhe der Zellen ist dabei uninteressant, und das Format als Text mit automatischem Umbruch erfordert eben diese Anpassung der Höhe.

Danach ruft das Makro den Dialog "Suche/Ersetzen" auf, sucht alle Vorkommen von "~~~" und blendet die entsprechenden Zeilen aus. Dadurch, dass ich den Klick auf "OK" im Fenster, welches über das Ergebnis des Suchvorganges informiert, mit aufgezeichnet habe, stört dieses Fenster nicht mehr.


Das Makro ist natürlich primitiv und nicht so raffiniert wie die Vorschläge hier im Forum, aber ich denke, genau dafür ist die Makroaufzeichnung gemacht: um schnell eine brauchbare Lösung für wiederholende Arbeitsschritte zu generieren. Möglichkeiten zur Optimierung und Verbesserung gibt es mit Sicherheit. Aber ich bin doch etwas erstaunt, dass dieser Weg über die Funktion "Suchen&Ersetzen" schneller über die 1000 Zeilen arbeitet, als ein Basic Programm, in dem zwei verschachtelte Schleifen durchlaufen. Ich hätte es eher anders herum vermutet, denn der Basic-Code erfordert keine Interaktion mit dem Benutzer, bzw er muss diese Interaktion nicht durchlaufen.


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten