Seite 1 von 1
[gelöst] Bild bei bestimmtem Wert ein- oder ausblenden
Verfasst: Fr 15. Jan 2021, 14:00
von Oscar B
Hallo!
Ich erstelle mir zur Zeit Tabelle bei Libreoffice Calc.
Nun versuche ich, dass bei einem bestimmten Wert in I8 eine Grafik darunter eingeblendet werden soll.
Steht also in I8 "Keine Aufgabe" soll die Grafik sichtbar sein, steht dort etwas anderes, soll sie unsichtbar sein. Das ganze soll passieren, ohne, dass ich noch z.B auf einen Knopf drücken muss, sondern rein durch Änderung des Wertes.
Ich vermute dies geht nur mit Hilfe eines Makros, wenn es anders geht, wäre auch schön.
Ich habe zwar ein wenig Kenntnis mit Programmierung, jedoch nicht mit Libreoffice Basic und Makros, wäre also ganz froh über anfängerfreundlicher Erklärung
Vielen Dank im Voraus
Re: Bild bei bestimmtem Wert ein- oder ausblenden
Verfasst: Fr 15. Jan 2021, 15:19
von craig
Hallo Oscar,
hier eine Beispieldatei mit Makro:
Weitere Beschreibungen in Tabellenblatt "Tabelle1" und Kommentare im Makrocode.
Re: Bild bei bestimmtem Wert ein- oder ausblenden
Verfasst: Fr 15. Jan 2021, 15:51
von Oscar B
craig hat geschrieben: ↑Fr 15. Jan 2021, 15:19
Hallo Oscar,
hier eine Beispieldatei mit Makro:
Grafik sichtbar_unsichtbar.ods
Weitere Beschreibungen in Tabellenblatt "Tabelle1" und Kommentare im Makrocode.
Vielen vielen Dank für die schnelle Antwort!!!
Ich habe das Makro nun auch bei meiner Tabelle hinzugefügt!
Ich musste mich erstmal ein bisschen reinfuchsen, aber jetzt läuft es genau wie ich wollte!
Deine Anleitungen und Anmerkungen waren super!!!
Wirklich tausend Dank

Re: Bild bei bestimmtem Wert ein- oder ausblenden
Verfasst: Fr 15. Jan 2021, 20:23
von Oscar B
Guten Abend,
ich habe doch noch eine Frage, bzw. ein Problem.
In der Zeile, in der die Grafik referenziert wird benutzt du:
Das funktioniert auch, wird aber bei mehreren Bilder etwas unübersichtlich.
Du hast aber daruntergeschrieben, dass auch folgendes geht:
Code: Alles auswählen
oDP=thisComponent.Drawpages(0).getByName("MeinBild 1")
Jetzt bekomme ich allerdings die Fehlermeldung:
"BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: getByName."
Weiß jemand woran das liegt, bzw. wie man es behebt?
Vielen Dank
Re: Bild bei bestimmtem Wert ein- oder ausblenden
Verfasst: Fr 15. Jan 2021, 22:03
von craig
Hallo Oscar,
ich bitte um Verzeihung. Da war ich wohl schlampig, weil nicht getestet.
Ich habe nun eine Schleife eingebaut, welche alle Bildnamen
durchläuft und bei einem Treffer das Bild ein-/ausblendet.
Ich weiß nicht wie Deine Originaldatei und Deine weiteres Vorhaben aussieht,
deshalb weiß ich nicht ob eine Fehlerroutine eingebaut werden muss, für den Fall,
dass der Bildname nicht vorhanden ist.
z.B. so etwas:
Exception Handling
Hier die neue Variante ohne Errorhandling:
Re: Bild bei bestimmtem Wert ein- oder ausblenden
Verfasst: Fr 15. Jan 2021, 22:42
von Oscar B
Erstmal wieder vielen Dank!!!
Bis jetzt ist die neue Version wirklich super und funktioniert! Morgen werde ich sie dann nochmal genauer testen.
Ein Errorhandling brauche ich nicht!
Gute Nacht!

Re: Bild bei bestimmtem Wert ein- oder ausblenden
Verfasst: Sa 16. Jan 2021, 09:43
von F3K Total
Moin,
ich hätte da noch einen Vorschlag
Mit folgendem, zugegebenermaßen nicht so gut kommentiertem Makro, lese ich den Namen der auslösenden Zelle (event.AbsoluteName) ein, und vergleiche ihn mit dem händisch eingegeben Namen einer Grafik.
Oder anders, wenn ich die Grafik so benenne wie die auslösende Zelle heißt, kann ich sehr leicht viele verschiedene Grafiken, vielen auslösenden Zellen zuordnen.

- AB.png (112.35 KiB) 2373 mal betrachtet
Hier erstmal im Zellbereich G8 bis G20.
Code: Alles auswählen
Sub show_hide(event)
osheet = thiscomponent.sheets.getbyname("Tabelle1")
oRange = osheet.getcellrangebyname("G8:G20")
if oRange.queryIntersection(event.RangeAddress).count = 1 then
oDrawPage = osheet.Drawpage
for i = 0 to oDrawPage.count - 1
oShape = oDrawPage(i)
if oShape.Name = event.AbsoluteName then
if event.Value = 1 then
oShape.Visible = true
else
oShape.Visible = false
endif
endif
next i
endif
end sub
Auf Craigs Datei basierendes Beispiel anbei.
Gruß R