🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ 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] Quellbereich von Listenfeld per Makro ändern

Alles zur Programmierung im LibreOffice.
Antworten
Oscar B
Beiträge: 28
Registriert: Fr 15. Jan 2021, 13:49

[gelöst] Quellbereich von Listenfeld per Makro ändern

Beitrag von Oscar B » Do 1. Apr 2021, 15:51

Moin,
ein Problem gelöst und direkt das Nächste :lol:
Ich habe in einer Tabelle zwei Listenfelder. Das eine mit verschiedenen Kategorien und das andere mit Unterkategorien.
Nun hänge ich daran in dem zweiten Listenfeld die Einträge zu ändern, je nach dem, welche Oberkategorie ausgewählt ist.
Bis jetzt habe ich im zweiten Listenfeld einen Quellbereich angegeben und in diesem ändern sich die Einträge über eine WENN Funktion. Das Problem ist, das die verschiedenen Kategorien unterschiedlich viele Unterkategorien haben. Das heißt mit meiner jetzigen Lösung sind bei den Kategorien mit weniger Unterkategorien einige Zeilen einfach leer.

Nun möchte ich über ein Makro den Quellbereich des Listenfeldes anpassen, je nach dem, welche Kategorie ausgewählt ist. Mit dem Xray Tool bin ich auf die Eigenschaft ListEntrySource -> CellRange gestoßen. Das Problem ist, das diese anscheinend Schreibgeschützt ist.
Habt ihr Ideen, wie das gehen könnte?

Vielen Dank
Oscar
Zuletzt geändert von Oscar B am Fr 2. Apr 2021, 18:32, insgesamt 1-mal geändert.
LibreOffice Version 7.1.1.2 (x64) - Windows 10 (x64)

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

Re: Quellbereich von Listenfeld per Makro ändern

Beitrag von mikele » Do 1. Apr 2021, 18:08

Hallo,
ich bin mir nicht sicher, wo die Reise hingeht.
Mit Hilfe benannter Bereiche und Gültigkeit lässt sich so etwas ohne Makro realisieren.
Bis jetzt habe ich im zweiten Listenfeld einen Quellbereich angegeben und in diesem ändern sich die Einträge über eine WENN Funktion.
Reden wir von Calc oder Basic?
Kannst du uns deinen aktuellen Stand als Datei zur Verfügung stellen?
Dateianhänge
kaskadierte dropdownlisten.ods
(11 KiB) 155-mal heruntergeladen
Gruß,
mikele

Oscar B
Beiträge: 28
Registriert: Fr 15. Jan 2021, 13:49

Re: Quellbereich von Listenfeld per Makro ändern

Beitrag von Oscar B » Do 1. Apr 2021, 18:55

Hallo!
Ich hatte mich etwas blöd ausgedrückt:
Es geht um Listenfelder aus den Formular-Steuerelementen und nicht um die Auswahl bei Datengültigkeit!
Die WENN Funktion ist kein Makro sondern in der Calc Tabelle.

Die gesamte Tabelle kann ich leider nicht hochladen, aber hier ist eine Datei, mit den Listenfeldern, wie sie im Moment sind und einem gekürzten Makroversuch!
Listenfelder.ods
(13.3 KiB) 163-mal heruntergeladen
Vielen Dank
Oscar
LibreOffice Version 7.1.1.2 (x64) - Windows 10 (x64)

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

Re: Quellbereich von Listenfeld per Makro ändern

Beitrag von mikele » Fr 2. Apr 2021, 16:20

Hallo,
ich bin es mal etwas anders angegangen, sodass es für dich (glaube ich) flexibler ist.
Auf dem Tabellenblatt "Daten für Listen" befinden sich in der ersten Zeile die Hauptkategorien. Darunter befinden sich die Unterkategorien. Wird auf diesem Tabellenblatt etwas geändert, werden die Listenfelder automatisch aktualisiert (Makro "init"), das Listenfeld 1 allerdings nur, wenn in der ersten Zeile (also den Hauptkategorien) etwas geändert wurde.
Wird die Auswahl im Listenfeld 1 geändert, wird das Listenfeld 2 angepasst (Makro "unterkategorie").
Es werden so viele Einträge in die Listenfelder geschrieben, wie im Tabellenblatt "Daten für Listen" vorhanden sind (jeweils bis zur ersten leeren Zelle).
Dateianhänge
Listenfelder2.ods
(13.55 KiB) 153-mal heruntergeladen
Gruß,
mikele

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

Re: Quellbereich von Listenfeld per Makro ändern

Beitrag von mikele » Fr 2. Apr 2021, 17:24

Hallo,
da mich die Variante per Quellzellenbereich gereizt hat, hier eine entsprechende Lösung.
Die Eigenschaft .ListEntrySource kann nicht einfach so gesetzt werden, sondern stellt einen komplexeren Service dar (der entsprechende Zellbereich muss z. B. auf Änderungen überwacht werden). Dieser Service muss entsprechend initiert werden und kann dann dem Listenfeld zugeordnet werden.
Dazu dient der folgende Code-Teil meiner Beispieldatei:

Code: Alles auswählen

		Dim initParam as new com.sun.star.beans.NamedValue
		initparam.name="CellRange"
		initparam.Value=oBereich
		oListSource=doc.createInstanceWithArguments("com.sun.star.table.CellRangeListSource",Array(initparam))
		
		FrmListeb.ListEntrySource=oListSource
Dateianhänge
Listenfelder3.ods
(12.78 KiB) 158-mal heruntergeladen
Gruß,
mikele

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

Re: Quellbereich von Listenfeld per Makro ändern

Beitrag von F3K Total » Fr 2. Apr 2021, 18:05

Moin,
irgendwie hatte ich im Gefühl, dass es auch ohne Makro funktioniert, anbei dein Beispiel, verändert.
Ich lasse vom ersten Listenfeld die Position des gewählten Eintrags ausgeben und verwende diese Zahl mit der Index()-Funktion als Matrix-Funktion um die Einträge der Unterkategorie, so wie du in deinem Beispiel, immer an der selben Stelle auszugeben.

Gruß R
Dateianhänge
Listenfelder.ods
(14.28 KiB) 179-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

Oscar B
Beiträge: 28
Registriert: Fr 15. Jan 2021, 13:49

Re: Quellbereich von Listenfeld per Makro ändern

Beitrag von Oscar B » Fr 2. Apr 2021, 18:32

Moin!
Die Lösungen von mikele sind beide wirklich super! Eine davon werde ich nehmen. Mal schauen welche sich besser einbauen lässt.

Die dritte Lösung ohne Makro funktioniert zwar, man hat aber wieder mein eigentliches Problem, dass bei den Kategorien mit weniger Unterkategorien leere Auswahlmöglichkeiten in der Liste sind. Danke trotzdem dafür!

Vielen Dank für eure Mühen und schöne Ostertage!
Oscar
LibreOffice Version 7.1.1.2 (x64) - Windows 10 (x64)

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

Re: [gelöst] Quellbereich von Listenfeld per Makro ändern

Beitrag von F3K Total » Sa 3. Apr 2021, 07:53

Moin,
Oscar B hat geschrieben:
Fr 2. Apr 2021, 18:32
... wieder mein eigentliches Problem, dass bei den Kategorien mit weniger Unterkategorien leere Auswahlmöglichkeiten in der Liste sind...
ups, den Wunsch hatte ich überlesen.
Das bekomme ich ohne Makro auch nicht hin.

Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO


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