Seite 1 von 1
Dynamisch Dropdownliste in Calc
Verfasst: Mi, 01.11.2006 22:46
von FeuerDaemon
Hallo alle zusammen
Über den Menüpunkt "Daten" - "Gültigkeit" kann ich mir in OO Calc eine Dropdownliste erstellen.
Ich versuche mir gerade eine dynamische Dropdownlise zu erstellen, habe aber noch keinen richtigen Lösungsansatz.
Am liebsten wäre es mir über ein Makro, welches den Listeninhalt anhand eines Array befüllt - habe aber noch keinen ensprechenden Objekte und Eigenschaften gefunden. *grübel*.
Ich könnte das Array aber auch in ein (anderes seperates) Sheet schreiben lassen und in Gültigkeit auf diese Sheet verweisen. Aber so richtig will mir auch das nicht gelingen.
Gibt es dafür evtl. schon eine BuildIn Funktion von OO oder stelle ich mich nur ungeschickt an?
Gruß Benjamin
Verfasst: Mi, 01.11.2006 23:45
von Karolus
Hallo Benjamin
Vermutlich ist das per Makro machbar, aber evtl. reicht es dir auch schon den Quellbereich deiner Dropdown-liste zb. mit einer SVERWEIS-funktion zu befüllen und dadurch eine "quasi"-dynamische Liste zu realisieren ?
Gruß Karo
Dynamisch Dropdownliste in Calc
Verfasst: Do, 02.11.2006 00:55
von FeuerDaemon
Hallo Karo
Danke für die schnelle Antwort.
Ich habe noch nicht ganz Verstanden, wie ich einer Dropdownliste einen Quellbereich zuweisen kann. Meine Versuche über "klicken" haben noch nicht ganz gefruchtet.
Ich Stelle unter Gültigkeit bei "Zulassen" den Zellbereich ein, aber es erscheint immer nur eine leere Liste. (?!) Hier sollte es eigentlich einen Zellbereich auf dem nächsten Sheet ansprechen.
Ich habe noch etwas gesucht und bin über die "Dialoge" gestolpert.
Evtl. kann ich Calc dazu bringen beim klick in eine Zelle eine Dialogbox anzuzeigen, in der ich eine DropDownliste präsentiere, die dynamisch befüllt wurde. Das ist zwar etwas "zu Fuss", könnte aber theoretisch klappen.
Schöner wäre es natürlich irgend ein Objekt ansprechen zu können. Vor allem um dann auch einen Index zu haben, ohne wieder mühseelig über ein Case herauszufieseln was den eigentlich in der Zelle steht.
Ich kann mir eigentlich nicht vorstellen, dass es dafür noch kein BuildIn Element gibt...
Gruß und Gute Nacht
Benjamin
Getestet wird dann wenn es wieder hell ist...
Verfasst: Do, 02.11.2006 01:48
von Karolus
Hallo Benjamin
Arbeitest du mit einer OOo-Version ab 2.0. ?
Bei den Versionen 1.1x gibts noch nicht die Möglichkeit, einen Zellbereich unter ->Daten->Gültigkeit einzustellen.
Ansonsten :
->Daten ->Gültigkeit 'Kriterien'-Zulassen('Zellbereich') auswählen, und unter 'Quelle' die Bereichsadresse eintragen.
(falls sich dieser Bereich auf einem anderen Tabellenblatt befindet, musst du dieses natürlich mit angeben zb. "Tabelle2.A1:A20")
Gruß Karo
Verfasst: Do, 02.11.2006 09:10
von Toxitom
Hey Benjamin, hey Karolus,
also ich glaube, ihr sprecht von verschienden "Sachen".
Karolus erklärt die Gültigkeitsprüfung von eingegebenen Daten in eine Zelle,
Benjamin möchte eine sich selbst füllende Auswahlliste erzeugen, die erkennt, ob ein Eintrag schon vorhanden ist oder nicht.
@ Benamin: OK, das geht nur mit Makros. Dabei definierst du zunächst irgendwo im Sheet einen Zellbereich, der später die Einträge aufnehmen soll. Dann lässt du ein Makro beim Start des Dokumentes laufen, das dir den Array der Listeneinträge erzeugt. Jezt wäre die Auswahlliste erst mal gefüllt.
Dann schreibst du ein Makro, das du dem Ereignis "Text modifiziert" der Combobox zuweist. Dieses Makro überprüft anhand der eingegebenen Buchstaben, ob der Eintrag bereits existiert - dann direkt anzeigen - oder neu aufgenommen wird. Die Neuaufnahmen passiert z.B. beim Ereignis "Fokusverlust" oder "Auslösen".
Ein direktes Add-Inn ist mir nicht bekannt. Beispiele für selbstfüllende Listen findest du aber viele - meist jedoch in Dialogboxen. Das Prinzip jedoch ist übertragbar.
Beispiele: Fahrtenbuch, Kassenbuch OOo und mehr
Viele Grüße
Thomas
Bessere Problembeschreibung
Verfasst: Do, 02.11.2006 17:23
von FeuerDaemon
@Karo: Ok, jetzt habe ich es zum Funktionieren gebracht (den Zellbereich). Ich glaube ich hatte zu dicke Finger gestern.
So kann ich jetzt zumindes eine vorläufig funktionsfähige Variante erstellen. Übrigens, ja ich habe OO 2.0.
@Thomas: Hm, vieleicht habe ich mich etwas zu undeutlich ausgedrückt.
Die Dropdownlisten sollten funktionieren wie man Sie z.B. von der Vorselektion zum Download diverser Software auf manchen Webseiten kennt.
Prinzip:
DropDownList: Betriebssystem:
-Windows
-Linux
-Mac
DropDownList: Version:
-Windows 2000
-Windows XP
-Windows 2000 Server
-Windows 2003 Server
-Suse10
-Debian
-Fedora
-...
DropDownList: Programm
-blablabla
-usw
Wenn ich in der ersten DDL Windows auswähle, sind die Einträge "Suse, Debian, etc" in Version natürlich überflüssig und umgekehrt. Die sollen dann natürlich nicht mehr angezeigt werden.
So sollte diese Sache funktionieren.
Diese Beispiel könnte man fast noch, etwas unschön, über verschiedene Spalten und "Wenn()" Funktionen hinbasteln. Aber dann könnte ich nicht mehr ruhig schlafen.
In meinem Fall versuche ich 28 dieser DDL in gegenseitiger Abhängigkeit zu erstellen.
Ich werde versuchen den Weg über eine Dialogbox zu gehen, die ihre Einträge aus einer Spalte bezieht. Und diese Spalte werde ich mit Makros "dynamisch" ja nach Abhängikeit befüllen.
Mein Ergebnis werde ich mitteilen...