[Gelöst] List Box über Makro ansprechen/Ausgabe verarbeiten?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

CamuelSpenser
**
Beiträge: 32
Registriert: Mo, 19.12.2011 11:52

Re: List Box über Makro ansprechen und Ausgabe verarbeiten?

Beitrag von CamuelSpenser »

So das hatte jetzt funktionniert mit :

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
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 :

Code: Alles auswählen

oListe2.StringItemList("HILFSTABELLE.$B$2:$B$26")
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)

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
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"

Code: Alles auswählen

oListe2.StringItemList("HILFSTABELLE.$A$2:$A$26")
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 :

Code: Alles auswählen

oListe2.StringItemList = Array("HILFSTABELLE.$A$2:$A$26")
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)

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
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
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: List Box über Makro ansprechen und Ausgabe verarbeiten?

Beitrag von balu »

Hallo CamuelSpenser,

Du hast dich entschuldigt, also entschuldige ich mich auch. Sorry, für den Anpfiff.


Nun habe ich aber ein besonders Problem mit deiner ods-Datei. Denn wenn ich im Blatt "Bestellformular" die "List Box 7" (die liegt auf der Zelle B10) anklicke und einen Eintrag auswähle, bekomme ich folgende Fehlermeldung.
Fehlermeldung.png
Fehlermeldung.png (16.45 KiB) 4021 mal betrachtet
Deshalb muss ich dir jetzt die Standardfragen stellen:
- Betriebssystem?
- Welche OOo beziehungsweise LO Version?
Denn wenn die Datei bei dir funktioniert, aber bei mir unter WinXP mit OOo 3.2.1 nicht, dann kann ich ja deine Beobachtung nicht eindeutig nachvolllziehen.

Das müssen wir jetzt unbedingt abklären, bevor wir weitermachen und vielleicht aneinander vorbei reden.


Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: List Box über Makro ansprechen und Ausgabe verarbeiten?

Beitrag von turtle47 »

Hallo Balu,

ich bin zwar nicht im Thema drin, aber erinnerst Du Dich noch an diese Aufgabenstellung. :wink:
Das geht doch fast in die gleiche Richtung.


Gruß
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: List Box über Makro ansprechen und Ausgabe verarbeiten?

Beitrag von balu »

Hallo Jürgen,

bei genauerer Überlegung frag ich mich jetzt auch, ob es denn unbedingt mit Formular-Steuerelementen gemacht werden muss, oder ob nicht vielleicht doch ->Daten ->Gültigkeit die einfachere Methode ist. :roll:
Ich persönlich würd mich für das letztere entscheiden.

Danke für deinen Denkanstoß :D . Hat ich aus diversen Gründen schon gar nicht mehr dran gedacht.


Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
CamuelSpenser
**
Beiträge: 32
Registriert: Mo, 19.12.2011 11:52

Re: List Box über Makro ansprechen und Ausgabe verarbeiten?

Beitrag von CamuelSpenser »

oha ich seh grad, das geht wirklich nicht, nur ist mir unbegreiflich warum es nicht funktioniert. :o
Hab die Original-Datei bei Hand und der Code ist 1 zu 1 derselbe aber bei der Original-Datei funktionniert es o.o

obwohl ich bei der Kopie-Datei nur die Preise entfernt habe... hm ok ich versuchs nochmal mit ner Kopie ob es dann klappt wenn ich die Preise entfernt hab is wohl iwie ein Fehler beim kompilieren passiert ? Ich weiss es nicht ^^

Hab jetzt nochmal das Original zu ner Test-Datei abgeändert (Preise entfernt) ... nun scheint es zu funktionnieren wie ich es beschrieben habe ohne den Runtime-Error...
Ich werde jedoch nach dem Posten die Datei nochmal von hier herunterladen um das ganze nochmals zu überprüfen nicht, dass beim hochladen eventuell ein Fehler unterlaufen ist, was ich mir jedoch schwer vorstellen kann... ^^

Zu Os etc :
Auf der Arbeit hab ich Windows XP Proffesionnal SP3, OpenOffice 3.3.0, Java 6 Update 22 (iwie will er Java 7 nicht?)
Hier auf dem PC is Windows 7 Home Premium, OpenOffice 3.3.0, Java 6 Update 27

Das aktuelle Ergebnis sieht Momentan so aus :

Bild

Gruß Camuel :)

P.S. : Wollt mich nochmal bei dir Entschuldigen balu, wusste nicht dass das mit dem "Cross-Posting" nicht gern gesehn ist, zumal mir dieser Terminus bis heute gänzlich unbekannt war. Möchte mich somit auch für meine Unwissenheit entschuldigen.


Edit :
Hab grad probier mit runterladen und öffnen und nun scheint es zu funktionieren :)

Edit 2:
P.S. : Euer Vorschlag mit Daten-Gültigkeit würde mir auch sehr entgegenkommen... aber leider bin ich gezwungen die Steuerelemente zu nutzen da mein Arbeitgeber dies so von mir verlangt :S
Dateianhänge
Testdatei.ods
Funktionnierende Datei - mehrmals getestet von mir jetzt vorm hochladen ^^
(75.69 KiB) 174-mal heruntergeladen
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: List Box über Makro ansprechen und Ausgabe verarbeiten?

Beitrag von DPunch »

Aloha
CamuelSpenser hat geschrieben:So das hatte jetzt funktionniert mit :

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
Das kann ich mir beim besten Willen nicht vorstellen, ".StringItemList("HILFSTABELLE.$A$2:$A$26")" beinhaltet ja nichtmal eine Zuweisung. Vermutlich (oder eher: mit ziemlicher Sicherheit) hattest Du die ListBox zwischenzeitlich per Hand befüllt.

Jedenfalls sollte das ungefähr so funktionieren:

Code: Alles auswählen

	oRange = oDocument.Sheets.getByName("HILFSTABELLE").getCellRangeByName("$A$2:$A$26")
	Dim aRangeProperty(0) as new com.sun.star.beans.NamedValue
	aRangeProperty(0).name = "CellRange"
	aRangeProperty(0).value = oRange.RangeAddress
	oListSource = oDocument.createInstanceWithArguments("com.sun.star.table.CellRangeListSource",aRangeProperty)
	oListe2.ListSourceType = com.sun.star.form.ListSourceType.TABLEFIELDS
	oListe2.ListEntrySource = oListSource
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: List Box über Makro ansprechen und Ausgabe verarbeiten?

Beitrag von balu »

Hallo CamuelSpenser,
Wollt mich nochmal bei dir Entschuldigen balu, wusste nicht dass das mit dem "Cross-Posting" nicht gern gesehn ist, zumal mir dieser Terminus bis heute gänzlich unbekannt war. Möchte mich somit auch für meine Unwissenheit entschuldigen.
Ist schon gut. Akzeptiert, und angenommen.

Euer Vorschlag mit Daten-Gültigkeit würde mir auch sehr entgegenkommen... aber leider bin ich gezwungen die Steuerelemente zu nutzen da mein Arbeitgeber dies so von mir verlangt :
Schade! Verstehen tu ich deinen Chäffe abba net. Aber wat solls!? Wir werden schon weiter kommen, irgendwie.


Gegen DPunch und sein Wissen komm ich ja nicht an, aber dennoch hab ich mal versucht meine Ideen umzusetzen. Und vielleicht ist es ja hilfreich.

Ich hatte ja in meinem ersten Beitrag hier einen anderen Thread verlinkt, in dem es ja um das befüllen von Listboxen geht. Auch wenn es um Listboxen in einem Dialog ging, so lies sich die Routine dementsprechend anpassen. Ich weis jetzt nur nicht ob der Vorschlag von DPunch, oder der vom verlinktem Thread schneller ist. Wie auch immer, ich habe den verlinkten genommen und etwas modifiziert in die Datei eingebaut.

Wegen Müdigkeit werd ich jetzt nicht sehr viel dazu sagen, bis auf das folgende.

Im Blatt "Bestellformular" die "List Box 7" (die liegt auf der Zelle B10) anklicken und einen Eintrag auswählen. Danach steht in der Listbox rechts daneben ("List Box 14") dann der Inhalt des gewünschten Datenbereichs zur Verfügung. Je nach dem welcher Eintrag in der "List Box 7" gewählt wird, wird die "List Box 14" dann dementsprechend gefüllt.

Dazu habe ich aber im Blatt HILFSTABELLE in der Zeile 2 (Blassgelber Bereich) einen kleinen Trick angewendet. Denn dort wird durch Matrixformeln der Benutzte Datenbereich als Zelladressierung ausgegeben. Beispielsweise so: A3:A26
Und auf diese Blassgelben Zellen greift nun das Makro zur Listboxbefüllung zu.


Einfach mal mit den beiden Listboxen spielen, und das geänderte Makro anschauen. Ich hoffe das ich dich mit den Makro-Änderungen nicht überfordere. Ansonsten sag bescheid, damit ich ausführlicher das ganze beschreibe. Und nicht vergessen, es ist nur ein Vorschlag. Wahrscheinlich liese sich das ein oder andere vielleicht noch verbessern.

Viel Spaß :)


Gruß
balu
Dateianhänge
ListBox_befüllen.ods
(78.65 KiB) 208-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
CamuelSpenser
**
Beiträge: 32
Registriert: Mo, 19.12.2011 11:52

Re: List Box über Makro ansprechen und Ausgabe verarbeiten?

Beitrag von CamuelSpenser »

Ahoi inr lieben ^^
hab nu ma bissle rumgetestet mit euren beiden Vorschlägen...

@DPunch :

Wie ich deinem Vorschlag entnehme würdest du (wenn ich den Code Richtig interpretiere), Auf den QuellZellenBereich zugreifen und diesen zu ändern? Dies würde mir persönlich natürlich sehr zuvorkommen, da ich dies für andere Bereiche später auch noch benötigen würde bzw. bevorzugen :)
Jedoch, bekomme ich eine Fehlermeldung mit der ich nicht umzugehen vermag bzw. nicht versteh was damit gemeint ist und zwar : "Fehler in Klammerschachtelung" in foglender Zeile :

Code: Alles auswählen

oListSource  = oDocument.CreateInstanceWithArguments("com.sun.star.table.CellRangeListSource".aRangeProperty)
Edit :
Hab die "" mal entfernt, nun gibt er mir die Fehlermeldung die Variable oRange sei nicht definiert, weiss aber nicht als was ich sie definieren soll, hab versucht mit Variant und Object aber beide male bekomm ich danach die Fehlermeldung, dass er Adress nicht als Eigenschaft resp. Methode kennt.
Edit Ende

@balu : deine Version geht schon genau in die Richtung wie das ganze funktionnieren soll ;)
jedoch ein paar Winzige Probleme, wenn ich z.B. bei Stärke den Eintrag "" auswähle,
bekomme ich eine Fehlermeldung in folgender Zeile :

Code: Alles auswählen

oSelctAdr = oHilfTab1.getCellByPosition(Pos-1,1).string


Fehlermeldung :
BASIC-Laufzeitfehler. Es ist eine Excepton aufgetreten
Type : com.sun.star.lang.IndexOutOfBoundsException
Message.

Die Fehlermeldung kann ich soweit ganz gut nachvollziehen, da in diesem Fall ja "Pos" = 0 ist und somit würde an getCellByPosition ja der Wert (-1,1) übergeben werden, wenn ich mich nicht irre, oder?
Damit versucht er ja dann auf eine Zelle zuzugreifen die nicht existiert und somit auch nicht erreicht werden kann?
Ansonsten funktionniert das ganze schon ziemlich gut :D

... Dies habe ich soeben auch gelöst bekommen mit ner if abfrage, bei welcher ich überprüfe ob Pos grösser ist als 0, wenn nicht wird sie per Nulllist() geleert.

Code: Alles auswählen

	oListe1   = oForm.GetByName("List Box 7")
	oListBox1 = oControler.GetControl(oListe1)
	Pos       = oListBox1.SelectedItemPos
	oListe2    = oForm.GetByName("List Box 14")	
	oListBox2 = oControler.GetControl(oListe2)		
	if Pos > 0 then 
		oSelctAdr = oHilfTab1.getCellByPosition(Pos-1,1).string
		oHilfsTabelle = oHilfTab1
		oLiboAdr = oSelctAdr
		oLiboNam = "List Box 14"	
		ListBoxFuellen		
	else
		oListBox2.Model.StringItemList = Nulllist()	
	end if 	
Hab zwar etwas gebraucht um die eingesetzte Formel zu verstehen, aber ich denke habs nun raus ^^
(schon etwas komplizierter wenn die Befehle da auf Deutsch stehn und nicht auf Englisch)

Was den Makro-Code angeht kann ich mir das meiste ziemlich gut vorstellen, momentan glaub ich alles zu verstehn sollten noch Fragen auftreten melde ich mich. :)

***
Wenn meine Interpretationen Richtig sind scheinen beider Versionen Erfolgversprechend zu sein ^^

Jetzt kommt noch eine große Hürde gibt es im StarBasic ein Gegenstück zum Application.Caller aus VBA?
Dadürch könnte ich meinen eventuell entstehenden Code auch verkleinern wieder, da ich das Makro für mehrere ListBoxen benutzen will, bei denen das Verhalten, das gleiche sein soll..

LG Camuel

und btw schon einen riesen Danke an euch für eure Hilfe :)
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: List Box über Makro ansprechen und Ausgabe verarbeiten?

Beitrag von balu »

Hallo CamuelSpenser,
wenn ich z.B. bei Stärke den Eintrag "" auswähle,
bekomme ich eine Fehlermeldung
Hatte ich auch. Müsste jetzt aber theoretisch nicht mehr vorkommen, da ich fälschlich der Listbox bei Ereignisse das Makro falsch zugeordnet hatte. Also bedarf es jetzt auch deiner Fehlerüberprüfung nicht mehr. In meiner aktuellen Version habe ich sie auch nicht drin.

Du hast mit der logischen Überlegung der Fehlerbeseitigung recht gehabt.

Jetzt kommt noch eine große Hürde gibt es im StarBasic ein Gegenstück zum Application.Caller aus VBA?
Dadürch könnte ich meinen eventuell entstehenden Code auch verkleinern wieder, da ich das Makro für mehrere ListBoxen benutzen will, bei denen das Verhalten, das gleiche sein soll..
Ich kann kein Russisch :lol:.
Will damit sagen, dass ich die VBA Befehle nicht kenne. Und von daher nicht weiss was das zu bedeuten hat.

Aber ich hatte dein Problem schon erkannt, und auch beseitigt. Dazu musste ich aber die Listboxen (Libos) umbenennen, damit meine Technik greifen kann.
Die Libos mit der Beschriftung "stärke" bekamen die fortlaufenden Nummern von 101 bis 106. Und die Libos mit der Beschriftung "Bezeichnung" sowie "Wenn anderer Granit: Bezeichnung" die Nummern von 111 bis 116.

Dadurch konnte ich bequem den Namen der auslösenden Libo auslesen, die Zahl extrahieren und in einen Wert umwandeln. Wenn jetzt z.B. die Libo 101 auslöst, dann wird zu der 101 noch 10 hinzuaddiert (111) und schon wird die Libo 111 befüllt. 10 dazuaddieren deshalb, weil so ein nachvollziehbarer zusammenhang der Libos entsteht. Du kannst natürlich auch einen anderen Faktor als 10 nehmen. Nur müssen dann die anderen Libos umbenannt werden.

Ich hoffe Du wirst das auch noch verstehen. Ansonsten, einfach melden.
Und ferner hoffe ich das es das ist was Du dir gewünscht hast :).


Gruß
balu
Dateianhänge
ListBox_befüllen_v2.ods
(79.66 KiB) 196-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: List Box über Makro ansprechen und Ausgabe verarbeiten?

Beitrag von DPunch »

Aloha
CamuelSpenser hat geschrieben:Auf den QuellZellenBereich zugreifen und diesen zu ändern?
Ich verstehe leider nicht, was Du meinst - der Code zeigt Dir lediglich, wie Du einen Zellenbereich als Quelle für eine Listbox setzen kannst, geändert wird da nichts.
CamuelSpenser hat geschrieben:Jedoch, bekomme ich eine Fehlermeldung mit der ich nicht umzugehen vermag bzw. nicht versteh was damit gemeint ist und zwar : "Fehler in Klammerschachtelung" in foglender Zeile :

Code: Alles auswählen

oListSource  = oDocument.CreateInstanceWithArguments("com.sun.star.table.CellRangeListSource".aRangeProperty)
Wie kommt denn der Punkt da rein?
Das sind zwei Parameter für den Aufruf einer Funktion, dementsprechend muss der Punkt vor "aRangeProperty" ein Komma sein.
CamuelSpenser
**
Beiträge: 32
Registriert: Mo, 19.12.2011 11:52

Re: List Box über Makro ansprechen und Ausgabe verarbeiten?

Beitrag von CamuelSpenser »

Uii hoppla mein Fehler Danke @DPunch jetzt muss ich nur noch rausfinden dann wie ich die oRange definieren muss ^^

habs mit Dim oRange as new com.sun.start.table.CellRange probiert aber da sagt er mir er wüsste nich was das ist =/



@balu
Ich glaube du hast es auch so schon rausgefunden, im Grunde ist es das was du so im Makro bewirkst ^^
Die Application.Caller im VBA schickt den Namen des Objektes was das Makro aufgerufen hat, sprich wie due hier es gemacht hast mit dem oEvent als Parameter der das Event auslöst wenn ich das nun auf die schnelle so richtig verstanden habe :)

hängt vllt mir der OOo Version zusammen, jedoch bleibt der vorhin erwähnt Fehler weiterhin bestehen (ListIndexOutOfBounds) ist schon hammer was de da geszaubert hast, auch wenn mir einiges etwas unklar erscheint ^^

Code: Alles auswählen

oListBoxNr = Val(Right(ausloeser,3))
Das Right(ausloeser,3) versteh ich schon nur was hat es mit dem Val auf sich? Wird das zur Interpretation benötigt? *grübel*
Der Rest is weiterhin verständlich :)

LG
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: List Box über Makro ansprechen und Ausgabe verarbeiten?

Beitrag von balu »

Hallo CamuelSpenser,
hängt vllt mir der OOo Version zusammen, jedoch bleibt der vorhin erwähnt Fehler weiterhin bestehen (ListIndexOutOfBounds)
Stimmt! Das liegt an der Version!
In der 3.2.1 stehen erst die Einträge, dann kommt ein nicht anwählbarer leerer Eintrag.
In der 3.3.0 kommt erst der leere Eintrag, der auch angewählt werden kann, und dann die richtigen Einträge.
Also ist das mit der If-Then Fehlerüberprüfung nicht verkehrt.

ist schon hammer was de da geszaubert hast
Dabei bin ich doch noch Anfänger mit einem sehr bescheidenen Wissen. Dennoch; Danke :D.

auch wenn mir einiges etwas unklar erscheint ^^

Code: Alles auswählen

oListBoxNr = Val(Right(ausloeser,3))
Das Right(ausloeser,3) versteh ich schon nur was hat es mit dem Val auf sich? Wird das zur Interpretation benötigt? *grübel*
Ich zitier mich mal.
balu hat geschrieben: die Zahl extrahieren und in einen Wert umwandeln
Wenn Du jetzt aus dem Text "List Box 101" den ersichtlichen Text-Teil "List Box" rausschneidest, bleib wohl 101 übrig. Jedoch ist das noch weiterhin ein Text, also kein Wert. Erst durch Val wird der Text in einen Wert gewandelt mit dem man dann auch rechnen kann, was zwingend nötig ist.

Ich hatte dir ja in meinem ersten Beitrag diverse Links gepostet, unter anderem den von Dannenhoefer. Dort steht das auch zum nachlesen. Einfach dort auf der Startseite auf Suchen klicken, und dann z.B. Val eingeben. (nur noch mal zur Erinnerung :wink:)

Die Application.Caller im VBA schickt den Namen des Objektes was das Makro aufgerufen hat ...
Aja ja Danke! Interessant zu Wissen.


Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: List Box über Makro ansprechen und Ausgabe verarbeiten?

Beitrag von balu »

Hallo CamuelSpenser,

hatte da noch was vergessen.
(schon etwas komplizierter wenn die Befehle da auf Deutsch stehn und nicht auf Englisch)
Du vertust dich!
Das eine sind feste Vorgaben, wie z.B. "GetByName", und das andere sind einfach defenierbare Variablen wie z.B. oAuslesen, oHilfsTabelle, oHilfTab1... Genau so gut könnten sie auch oLecker, oSehrSaureZitrone ... heißen.

Es ist jedoch sehr sinnvoll die Variablen zu Typisieren. Wobei beispielsweise o für Objekt, t für Text steht. Man muss nicht unbedingt Typisieren, aber vorteilhaft wäre es schon, da man dadurch besser den Überblick behalten kann was was ist.

Irgendwo gibt es auch ne Liste wo die Kürzel aufgelistet sind, nur hab ich momentan nicht den Link dazu. Immer halte ich mich auch nicht so recht an die Typisierung, aber ich versuch es so weit wie möglich einzuhalten.


Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
CamuelSpenser
**
Beiträge: 32
Registriert: Mo, 19.12.2011 11:52

Re: List Box über Makro ansprechen und Ausgabe verarbeiten?

Beitrag von CamuelSpenser »

Hallo balu,

esrtma Danke für deine Erklärungen, das ist immer gut zu wissen :D

Zum Thema Val .. auch gut zu wissen, da dies bei VBA wohl autmoatisch passiert, hatte jedenfalls da nie nen Type Mismatch deswegen obwohl ich da auch von nem string einfach die letzten 3 zahlen weghau, gin da aber ohne Problem, sogar wenn dann z.B. als Ergebnis " 94" rauskam um ein Beispiel zu nennen hatt er beim Case aber erkannt dass es sich um die Zahl 94 handle.. ^^

Muss hier wohl meine Kompetenzen erweitern, dass dies eben nicht immer "automatisch" erkannt wird.

Zum anderen meinte ich die OOo Befehle, wie z.B. IF, hier bei mir im OOo als WENN angezeigt und so ^^
Dennoch Danke für deine ausführliche Beschreibung dazu.

Werd mir heut abend zu Hause mal die Seite von Dannenhofer etwas genauer anschauen, hab bisher nur vereinzelte Seiten durchgesehn bei denen ich dachte, dass sie mir nützen würden.
Jedoch vermisse ich bei den Erklärungen dort die Definitionen der Variablen was auch nicht immer eindeutig hervorgeht.
Wenn man z.B. plötzlich was in der Richtung :
Dim XXX as new com.sun.iwas definieren muss..

Hab da auch schon par Seiten durchgeschaut wie das damit geht, jedoch wurden die meisten von mir versuchten Typen von OOo nicht erkannt, weiss aber auch nicht voran das liegt,
wie zum Beispiel aus meine vorherigen Antwort an DPunch entnehmen kannst wo ich versucht hatte den oRange auf mehrere Arten zu definieren jedoch ohne erfolg, resp. bei meinem "Erfolg" der zunichte gemacht wurde dadurch, dass Object wohl kein Attribut .Adress hat ^^

LG, Camuel
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: List Box über Makro ansprechen und Ausgabe verarbeiten?

Beitrag von DPunch »

Aloha
CamuelSpenser hat geschrieben: jetzt muss ich nur noch rausfinden dann wie ich die oRange definieren muss ^^
habs mit Dim oRange as new com.sun.start.table.CellRange probiert aber da sagt er mir er wüsste nich was das ist =/
Benutzt Du "Option Explicit"?
Wenn nicht, dann brauchst Du gar keine Definition, wenn ja, dann reicht ein "Dim oRange".
Antworten