03.11.2022, 19:09 (Dieser Beitrag wurde zuletzt bearbeitet: 03.11.2022, 19:14 von Ralf A.)
..nein @juvee,
das hast Du missverstanden. Sorry wenn das so rüberkam... Dich meinte ich damit nicht. Du wolltest lediglich helfen (hast Du ja auch). Ich meinte den TO, der auf Biegen und Brechen auf einer unnötigen VBA Lösung für ein total banales Problemchen bestand um vlt. mit Deiner Lösung irgendwen zu beeindrucken... Jedenfalls fällt mir kein anderer Grund ein, weshalb man auf einer ungünstigeren Lösung beharrt... Der genannte Grund, es könnten ja mal mehr als 25 Einträge sein, ist wirklich nicht einleuchtend oder überzeugend...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
03.11.2022, 19:17 (Dieser Beitrag wurde zuletzt bearbeitet: 03.11.2022, 19:25 von Ralf A.)
...alles ist gut....
(03.11.2022, 18:41)schauan schrieb: ich versuch, Verständnis für den TE aufzubringen Wenn ich den kompletten Text im Dropdown haben wollte, müsste ich die Zellen breiter machen, was nun auch wieder unnötig oder gar unerwünscht ist ...
...smile... das ehrt Dich, aber die Zelle ist der Ort, an welchem ich die Information sehen will... und beim Drucken gibt es die Form auch nicht dazu... Was nutzt mir eine abgeschnittene Info, bei der im schlimmsten Fall die ersten 5 Buchstaben oder Ziffern auch noch gleich sind?
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Zitat:...smile... das ehrt Dich, aber die Zelle ist der Ort, an welchem ich die Information sehen will... Was nutzt mit eine abgeschnittene Info, bei der im schlimmsten Fall die ersten 5 Buchstaben auch noch gleich sind?
Genau. In der Zelle mit dem Textumbruch sieht man den kompletten Text, im Dropdown aber nicht. Guckst Du ... Für die Listen-Quelle ist die Zellbreite egal. Da will / soll man ja nicht reinschauen.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
04.11.2022, 11:15 (Dieser Beitrag wurde zuletzt bearbeitet: 04.11.2022, 11:16 von derHoepp.)
Hallo und guten Morgen von mir,
sehr sinnvoll finde ich das ganze auch nicht, aber ich gehe mal davon aus, dass es dem TE darum geht, zu lernen. Ich hätte da noch eine Lösung mit einer "SingleChoiceBox", die letztlich wie eine MessageBox zu verwenden ist. Kern ist eine Userformklasse mit einer getSingleChoice-Methode, der man ein Array mit Auswahlmöglichkeiten übergibt, aus der der User dann eine Auswahl treffen kann. Das Array kann über eine Textbox gefiltert werden. Der Einfachheit halber gibt es eine Wrapper-Methode, die die Instanzierung der Klasse kapselt; natürlich lässt sich die Klasse wie jede andere Klasse auch eigenständig nutzen.
Ich habe das ganze schnell zusammengezimmert, eine Fehlerbehandlung findet nicht statt. In der Beispieldatei wird die SingleChoiceBox wie von dir beschrieben verwendet. Sobald im Listobject auf dem Tabellenblatt "Vordergrund" im Feld Text eine leere Zelle ausgewählt wird, wird die Singlechoicebox mit dem Inhalt der Textbausteine aufgerufen.
die Wrapper-Function habe ich erstellt, damit man nicht bei jeder Nutzung im Programm an die Instanzierung und Terminierung denken muss. Das ganze lässt sich dann einfach wie auch eine Messagebox mit einem einfachen Funktionsaufruf nutzen.
Den einfachen With New ClassObject-Block habe ich dabei nicht verwendet, weil dann eine Unterscheidung der Rückgabewerte (-1 für Abbruch, sonst String) nicht mehr möglich ist. Eine temporäre Variable wäre dann notwendig. Zusätzlich würde ich das Transponieren nicht in die Klasse auslagern. Damit sie Wiederverwendbar bleibt, sollte der aufrufende Code sicherstellen, dass ein eindimensionales Array übergeben wird (Aufgabe der Klasse wäre es allerdings, einen Fehler zu werfen, wenn kein eindimensionales Array übergeben wird).