Re: List Box über Makro ansprechen und Ausgabe verarbeiten?
Verfasst: Di, 20.12.2011 13:37
So das hatte jetzt funktionniert mit :
Bei "Models!" bekomm ich nen BASIC-Laufzeitfehler deshalb hatte ich den auskommentiert, danach gelang es mir 1-mal die ListBox zu befüllen.
Nun wollte ich versuchen ob ich auch ne andere Liste reinbekomme und hab Testweise diese Zeile so manipuliert :
Jedoch hat er hier die vorher definierten Einträge behalten und die änderung nicht übernommen.
Nun hatte ich Erfolglos versucht die Liste vor dem befüllen zu leeren, hierzu hatte ich diese beiden varianten ausprobiert (beide hier auskommentiert)
Bei beiden bekam ich den Runtime Error, dass er Sub oder Funktion nicht gefunden habe...
Nun gut hatt ich mir gedacht leer ich die Listbox mal übers Kontrollfeld klammer die beiden versuche aus um sie übers Makro zu leeren.
Doch nun stoße ich auf ein neues Problem
Hatte nun das Makro wieder aufegrufen über die "List Box 7" und siehe da.. da hab ich ne neue Fehlermeldung da stehn =/
"Unzulässiger Wert oder Datentyp - Index Außerhalb des definierten Bereichs"
Wobei ich diese Fehlermeldung nun nich wirklich verstehe da es ja 1 mal geklappt hatt, und der "Definierte Bereich" von mir vorgegeben wird?
Oder irre ich mich jetzt gewaltig?
Wenn ja wäre dies in etwa so eine Fehlermeldung wie ich sie von Delphi kenne in der Art "ListIndex out of bounds(0)"?
Edit : Hab jetzt nochma andersrum probiert mit :
Nun füllt er zwar die ListBox jedoch nicht mir dem gewünschten Ergebnis..
Hab nun den Text HILFSTABELLE.$A$2:$A$26 da stehn und nicht die Einträge *___* jedoch schon wieder nen Schritt weitergekommen
Edit 2 :
Hab nun gesehn, dass er den Wert in die Listen-Einträge in den Allgemeinen Eigenschaften der ListBox eingetragen hatt und nicht wie es eigentlich mein Ziel ist in die Daten-Eigenschaften - Quellzellenbereich. Oder hab ich mich iergendwo vertan? x3
Im Anhang findet ihr die .ods Datei mit den änderungen die ich von euch erhalten hab und gestestet hab ^^
Desweiteren findet ihr im Anhang noch die Excel-Datei, damit ihr euch eventuell besser vorstellen könnt wie alles funktionnieren soll.
Edit 3 :
Resp. könnte auch so funktionnieren wenn ich es iwie auf die Reihe krieg da Array richtig zu definieren hab beim Array folgendes Problem : (Immer noch im selben sub deshalb kürz ich es ein wenig ab
)
Nebenbei das leeren der Listbox ist mir nun auch geklückt xD is aber bissle gekünstelt (abgekupfert aus den Tool-Makros)
Einträge sind dann zwar im Array drin leider hapert es aber an der Ausgabe ^^
krieg jetzt als Ausgabe folgendes :
HILFSTABELLE.$A$2, ..... usw
Wie kann ich das jetzt machen dass er den Wert aus der Zelle nehmen soll und nicht das was jetzt da steht...
Edit ... ODS im Anhang Aktualisiert.
PS. :.. Das befüllen der Listbox auf diese Weise ist jedoch leider etwas träge :s
braucht sage und schweige ca 2-3 sekunden bis die Listbox den Inhalt löscht und wechselt, was eindeutig zu lange dauert, da somit die Benutzerfreundlichkeit etwas sinkt, da die meisten immer nur schnell und gehetzt ma damit arbeiten oder vllt unter Zeitdruckstehn und es nicht sofort funktionniert =/ deshalb würd ich mich sehr freuen wenn vllt jemand mir sagen könnte wie ich den Quellzellenbereich übers Makro einsetzen kann, ich denke dass sich dadurch die Zugriff/Rechenzeit doch extrem verkürzen liesse da nicht soviele Schritte von Nöten wären...
LG
Code: Alles auswählen
If oPos = 1 Then
oListe2 = oForm.GetByName("List Box 14")
oListBox2 = oControler.GetControl(oListe2)
REM Models!
oListe2.StringItemList("HILFSTABELLE.$A$2:$A$26")
End If
Nun wollte ich versuchen ob ich auch ne andere Liste reinbekomme und hab Testweise diese Zeile so manipuliert :
Code: Alles auswählen
oListe2.StringItemList("HILFSTABELLE.$B$2:$B$26")
Nun hatte ich Erfolglos versucht die Liste vor dem befüllen zu leeren, hierzu hatte ich diese beiden varianten ausprobiert (beide hier auskommentiert)
Code: Alles auswählen
If oPos = 1 Then
oListe2 = oForm.GetByName("List Box 14")
oListBox2 = oControler.GetControl(oListe2)
'Models!
'EmptyListbox(oListe2)
REM EmptyListbox() hab ich in den "Tools" gefunden und ausprobiert..
'oListe2.StringItemList = NullList()
REM NullList () ist die Funktion die in der EmptyListbox aufegrufen wird?
oListe2.StringItemList("HILFSTABELLE.$A$2:$A$26")
End If
Nun gut hatt ich mir gedacht leer ich die Listbox mal übers Kontrollfeld klammer die beiden versuche aus um sie übers Makro zu leeren.
Doch nun stoße ich auf ein neues Problem

Hatte nun das Makro wieder aufegrufen über die "List Box 7" und siehe da.. da hab ich ne neue Fehlermeldung da stehn =/
"Unzulässiger Wert oder Datentyp - Index Außerhalb des definierten Bereichs"
Code: Alles auswählen
oListe2.StringItemList("HILFSTABELLE.$A$2:$A$26")
Oder irre ich mich jetzt gewaltig?
Wenn ja wäre dies in etwa so eine Fehlermeldung wie ich sie von Delphi kenne in der Art "ListIndex out of bounds(0)"?
Edit : Hab jetzt nochma andersrum probiert mit :
Code: Alles auswählen
oListe2.StringItemList = Array("HILFSTABELLE.$A$2:$A$26")
Hab nun den Text HILFSTABELLE.$A$2:$A$26 da stehn und nicht die Einträge *___* jedoch schon wieder nen Schritt weitergekommen

Edit 2 :
Hab nun gesehn, dass er den Wert in die Listen-Einträge in den Allgemeinen Eigenschaften der ListBox eingetragen hatt und nicht wie es eigentlich mein Ziel ist in die Daten-Eigenschaften - Quellzellenbereich. Oder hab ich mich iergendwo vertan? x3
Im Anhang findet ihr die .ods Datei mit den änderungen die ich von euch erhalten hab und gestestet hab ^^
Desweiteren findet ihr im Anhang noch die Excel-Datei, damit ihr euch eventuell besser vorstellen könnt wie alles funktionnieren soll.

Edit 3 :
Resp. könnte auch so funktionnieren wenn ich es iwie auf die Reihe krieg da Array richtig zu definieren hab beim Array folgendes Problem : (Immer noch im selben sub deshalb kürz ich es ein wenig ab

Nebenbei das leeren der Listbox ist mir nun auch geklückt xD is aber bissle gekünstelt (abgekupfert aus den Tool-Makros)
Code: Alles auswählen
Sub Staerke_Change()
Dim I as Integer
dim array(24), Nulllist() as string
globalscope.BasicLibraries.LoadLibrary("Tools")
DialogLibraries.LoadLibrary("Standard")
for I = 0 to 24
array(i) = "HILFSTABELLE.$A$" + (I+2)
next i
oListe2 = oForm.GetByName("List Box 14")
oListBox2 = oControler.GetControl(oListe2)
oListBox2.Model.StringItemList = Nulllist()
If oPos = 1 Then oListBox2.Model.StringItemList = array()
End Sub
krieg jetzt als Ausgabe folgendes :
HILFSTABELLE.$A$2, ..... usw
Wie kann ich das jetzt machen dass er den Wert aus der Zelle nehmen soll und nicht das was jetzt da steht...
Edit ... ODS im Anhang Aktualisiert.

PS. :.. Das befüllen der Listbox auf diese Weise ist jedoch leider etwas träge :s
braucht sage und schweige ca 2-3 sekunden bis die Listbox den Inhalt löscht und wechselt, was eindeutig zu lange dauert, da somit die Benutzerfreundlichkeit etwas sinkt, da die meisten immer nur schnell und gehetzt ma damit arbeiten oder vllt unter Zeitdruckstehn und es nicht sofort funktionniert =/ deshalb würd ich mich sehr freuen wenn vllt jemand mir sagen könnte wie ich den Quellzellenbereich übers Makro einsetzen kann, ich denke dass sich dadurch die Zugriff/Rechenzeit doch extrem verkürzen liesse da nicht soviele Schritte von Nöten wären...
LG