Listbox füllen
Moderator: Moderatoren
Listbox füllen
Moin,
hab das Forum durchsucht hab entweder nichts passendes gefunden oder Ich war mal wieder blind.
Ich habe folgendes Problem
Ich habe auf einem Tabellenblatt eine ListBox ("Listbox2")
Die Inhalte dieser möchte ich gern automatisch füllenlassen.
Jedoch bekomme ich da nichts reingeschrieben.
Es handelt sich um kein Model im Dialog (das wär ja auch für mich zu schaffen).
Jemand nen Ahnung?
Grüße
Paule
hab das Forum durchsucht hab entweder nichts passendes gefunden oder Ich war mal wieder blind.
Ich habe folgendes Problem
Ich habe auf einem Tabellenblatt eine ListBox ("Listbox2")
Die Inhalte dieser möchte ich gern automatisch füllenlassen.
Jedoch bekomme ich da nichts reingeschrieben.
Es handelt sich um kein Model im Dialog (das wär ja auch für mich zu schaffen).
Jemand nen Ahnung?
Grüße
Paule
Hey Paule,
Wo genau leigen denn deien Probleme? Wenn du es im Dialg schaffst, dann solltest du es auch im Formular schaffen. Woran hakt es?
Du brauchst ein kurzes Beispiel?
OK, bitte sehr :
Das Beispiel füllt die Auswahlliste einer ListBox im ersten Formular der ersten Tabellenblattes. Der Name der Listbox heisst dabei "ListBox1" (Groß- und Kleinschreibung beachten!)
Noch Fragen....
Gruss
Thomas
SicherJedoch bekomme ich da nichts reingeschrieben.
[..]
Jemand nen Ahnung?

Wo genau leigen denn deien Probleme? Wenn du es im Dialg schaffst, dann solltest du es auch im Formular schaffen. Woran hakt es?
Du brauchst ein kurzes Beispiel?
OK, bitte sehr :
Code: Alles auswählen
sub ListeFuellen1
Dim oListBox as Object, aListe(), oForm as Object
oForm = thisComponent.sheets(0).Drawpage.Forms(0)
oListBox = oForm.getByName("ListBox1")
aListe = Array("Januar", "Februar", "März", "April", "Mai", _
"Juni", "Juli", "August", "September", "Oktober", _
"November", "Dezember")
oListBox.StringItemList = aListe()
end sub
Das Beispiel füllt die Auswahlliste einer ListBox im ersten Formular der ersten Tabellenblattes. Der Name der Listbox heisst dabei "ListBox1" (Groß- und Kleinschreibung beachten!)
Noch Fragen....
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
hm ja das klappt toll
Ich will allerdings das die Einträge aus dem Tabellenblatt kommen und krieg die Schleife dazu nicht hin da bei
oListBox.StringItemList = aListe()
alle vorhandenen Einträge gelöscht (oder ersetzt) werden.
mit AddItem (Wäre für mich am logischten(? richtig geschrieben)
gehts nicht.
Ich will allerdings das die Einträge aus dem Tabellenblatt kommen und krieg die Schleife dazu nicht hin da bei
oListBox.StringItemList = aListe()
alle vorhandenen Einträge gelöscht (oder ersetzt) werden.
mit AddItem (Wäre für mich am logischten(? richtig geschrieben)
gehts nicht.
Hey Paule,
Wenn du "nur" einen Eintrag hinzufügen willst, dann lies den Array zuerst aus, füge deinen neuen Wert hinzu und schreibe sie zurück.
Auslesen, Array um 1 erweitern, neune Wert einlesen, rückschreiben::
Jetzt musst du allerdings selbst Sorge tragen, dass die Liste nicht zu gross wird. Aber auch da gibt es natürlich Möglichkeiten.
Gruss
Thomas
Das stimmt. Bei Formularen (und deren Listbox) gibt es keine Methoden addItem oder RemoveItem. Hier bleibt der einfachste Weg über die Liste....alle vorhandenen Einträge gelöscht (oder ersetzt) werden...
Wenn du "nur" einen Eintrag hinzufügen willst, dann lies den Array zuerst aus, füge deinen neuen Wert hinzu und schreibe sie zurück.
Auslesen, Array um 1 erweitern, neune Wert einlesen, rückschreiben::
Code: Alles auswählen
dim DatenArray()
Datenarray = oListBox.stringItemList
iDim = UBound(Datenarray)
redim preserve DatenArray( iDim+1)
Datenarray(Ubound(Datenarray)) = "neuer Eintrag"
oListbox.stringItemList = Datenarray
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Wo genau kommt die Meldung? Immer die markierte Zeile mit posten - sonst ist das einfach Raterei...Basic Syntaxfehler:
Dimensionsangaben passen nicht zusammen.
Tippe mal hier:
Code: Alles auswählen
oListbox.stringItemList = Datenarray()
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
ja tschuldige.
Gruß
Paule[/quote]
ne angezeigt wird der :ippe mal hier:
Code:
oListbox.stringItemList = Datenarray()
Code: Alles auswählen
Datenarray(Ubound(Datenarray)) = "neuer Eintrag"
Gruß
Paule[/quote]
Na, dann pass eben die Zeile entsprechend an.ne angezeigt wird der : ...
OK, schludrige Schreibweise - Arrays werden mit den Klammern definiert....
Code: Alles auswählen
dim DatenArray()
Datenarray = oListBox.stringItemList
iDim = UBound(Datenarray)
redim preserve DatenArray( iDim+1)
Datenarray(Ubound(Datenarray())) = "neuer Eintrag"
oListbox.stringItemList = Datenarray()
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Hallo Thomas,
Dann kriege ich die Fehlermeldung
IllegalArgumentException
Message:.
Also hab ich wieder ein bischen rumpobiert und kam auf das hier:
Krieg nun kein Fehler aber passiert auch nichts
Gruß Paule
Hab ich schon versucht... sorry das ich das nicht mitgepostet habNa, dann pass eben die Zeile entsprechend an.

Dann kriege ich die Fehlermeldung
IllegalArgumentException
Message:.
Also hab ich wieder ein bischen rumpobiert und kam auf das hier:
Code: Alles auswählen
dim DatenArray()
Datenarray = oListBox.stringItemList
iDim = UBound(Datenarray)
redim preserve DatenArray( iDim+1)
Datenarray(Ubound(Datenarray())) = "neuer Eintrag"
stringItemList = Datenarray()
oListbox = stringItemList

Gruß Paule
Hey Paule,
Aber: Ich hab dir doch den passenden Code gepostet. Der jedenfalls funktioniert bei mir!
Gruss
Thomas
Das kann ja auch nicht funktionierenstringItemList = Datenarray()
oListbox = stringItemList

Aber: Ich hab dir doch den passenden Code gepostet. Der jedenfalls funktioniert bei mir!
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
ah ja hast Recht...
Mein Pc hat manchmal zuckungen
Nach abspeichern, schließen- neustart gings.... hm...?!?
aber egal.
Ich will das ja nun in eine Schleife packen also ungefähr so.
klappt aber nicht wieder so ein dimensionskram...
Muss ich DatenArray(1) oder so schreiben , also sagen das ich halt mehr davon hab ?
gruß paule
Mein Pc hat manchmal zuckungen

Nach abspeichern, schließen- neustart gings.... hm...?!?
aber egal.
Ich will das ja nun in eine Schleife packen also ungefähr so.
Code: Alles auswählen
osheet = thiscomponent.sheets.getbyname("Ansicht")
ozelle = osheet.getcellbyposition(1,2)
If ozelle.string = "1" then
for i = 2 to 65535
osheet = thiscomponent.sheets.getbyname("T2")
ozelle = osheet.getcellbyposition(170,i)
If ozelle.string = "" then
goto lt1_ende else
stext = ozelle.string
DatenArray = oListBox.stringItemList
iDim = UBound(DatenArray)
redim preserve DatenArray( iDim+1)
DatenArray(Ubound(DatenArray())) = stext
oListbox.stringItemList = DatenArray()
end if
next
end if
lt1_ende:
osheet = thiscomponent.sheets.getbyname("Ansicht")
ozelle = osheet.getcellbyposition(1,2)
If ozelle.string = "2" then
for i = 2 to 65535
osheet = thiscomponent.sheets.getbyname("T2")
ozelle = osheet.getcellbyposition(171,i)
If ozelle.string = "" then
goto lt2_ende else
stext = ozelle.string
DatenArray = oListBox.stringItemList
iDim = UBound(DatenArray)
redim preserve DatenArray( iDim+1)
DatenArray(Ubound(DatenArray())) = stext
oListbox.stringItemList = DatenArray()
end if
next
end if
lt2_ende:
Muss ich DatenArray(1) oder so schreiben , also sagen das ich halt mehr davon hab ?
gruß paule
Code: Alles auswählen
Muss ich DatenArray(1) oder so schreiben , also sagen das ich halt mehr davon hab ?
Erst fragen, dann denken
Paule
Hey Paule,
hmm, der Code sieht schon noch ziemlich "wüst" aus. Auch finde ich keinen DatenArray1() - aber vielleicht hast du das je abgeändert.
Kannst du mal in Worten beschreiben, was du eigentlich erreichen willst? Ich würde den Code dann mal ein bischen "optimieren".
Auch wenn Basic nach wie vor die goto Befehle unterstützt - man sollte sie nicht mehr verwenden, das macht den Code ziemlich "unleserlich".
Also, ich biete meine Hilfe an....
Gruss
Thomas
hmm, der Code sieht schon noch ziemlich "wüst" aus. Auch finde ich keinen DatenArray1() - aber vielleicht hast du das je abgeändert.
Kannst du mal in Worten beschreiben, was du eigentlich erreichen willst? Ich würde den Code dann mal ein bischen "optimieren".
Auch wenn Basic nach wie vor die goto Befehle unterstützt - man sollte sie nicht mehr verwenden, das macht den Code ziemlich "unleserlich".
Also, ich biete meine Hilfe an....
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
hi Thomas,
Eine bessere lösung viel mir nicht ein.
Viel Glück
Paule
gerneAlso, ich biete meine Hilfe an....

Code: Alles auswählen
Dim oListBox as Object, oForm as Object
oForm = thisComponent.sheets.getbyname("Ansicht").Drawpage.Forms(0)
oListBox = oForm.getByName("ListBox2")
dim DatenArray()
dim DatenArray1()
dim DatenArray2()
dim DatenArray3()
dim DatenArray4()
dim DatenArray5()
dim DatenArray6()
dim DatenArray7()
dim DatenArray8()
aListe = Array("")
oListBox.StringItemList = aListe()
osheet = thiscomponent.sheets.getbyname("Ansicht")
ozelle = osheet.getcellbyposition(17,0)
If ozelle.string = "T1" then
Goto T1List
end if
if ozelle.string = "T2" then
Goto T2List
end if
T2List:
osheet = thiscomponent.sheets.getbyname("Ansicht")
ozelle = osheet.getcellbyposition(1,2)
If ozelle.string = "1" then
for i = 2 to 65535
osheet = thiscomponent.sheets.getbyname("T2")
ozelle = osheet.getcellbyposition(170,i)
If ozelle.string = "" then
goto lt1_ende else
stext = ozelle.string
DatenArray = oListBox.stringItemList
iDim = UBound(DatenArray)
redim preserve DatenArray( iDim+1)
DatenArray(Ubound(DatenArray())) = stext
oListbox.stringItemList = DatenArray()
end if
next
end if
lt1_ende:
osheet = thiscomponent.sheets.getbyname("Ansicht")
ozelle = osheet.getcellbyposition(1,2)
If ozelle.string = "2" then
for i = 2 to 65535
osheet = thiscomponent.sheets.getbyname("T2")
ozelle = osheet.getcellbyposition(171,i)
If ozelle.string = "" then
goto lt2_ende else
stext = ozelle.string
DatenArray1 = oListBox.stringItemList
iDim = UBound(DatenArray1)
redim preserve DatenArray1( iDim+1)
DatenArray(Ubound(DatenArray1())) = stext
oListbox.stringItemList = DatenArray1()
end if
next
end if
lt2_ende:
' usw.. halt 8 mal
Viel Glück

Paule
Hey Paule,
Bitte:
Thomas
Bitte:
DAS würde ich gerne sehen. Nur so kann man den Weg optimierenThomas hat geschrieben: Kannst du mal in Worten beschreiben, was du eigentlich erreichen willst?

Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic