BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 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
Beiträge: 1642
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) 103-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) 106-mal heruntergeladen
Vielen Dank
Oscar
LibreOffice Version 7.1.1.2 (x64) - Windows 10 (x64)

mikele
Beiträge: 1642
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) 107-mal heruntergeladen
Gruß,
mikele

mikele
Beiträge: 1642
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) 113-mal heruntergeladen
Gruß,
mikele

F3K Total
Beiträge: 2410
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) 126-mal heruntergeladen
Windows 10: 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
Beiträge: 2410
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 10: AOO, LO Linux Mint: AOO, LO

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten