Seite 1 von 1
[gelöst] Verknüpfte Zelle einer Liste per Makro ändern
Verfasst: Di, 02.07.2013 15:23
von delta9
Hallo,
beim manuellen Kopieren eines Arbeitsblattes bleibt die Verknüpfung einer darin enthaltenen Liste auf die Zelle im alten Blatt bestehen.
Das will ich per Makro ändern. Zugriff auf die Liste habe ich , sie heisst bei mir "Objekt".
mit
will ich die ermittelte aktuelle Blattnummer zuordnen.
Das Makro läuft ohne Fehlermeldung, es ändert sich aber nichts.
Über xray habe ich auch Zugriff auf die Struktur, aber es ändert sich eben nichts.
Wer hat einen Tipp?
Stefan
Re: Verknüpfte Zelle einer Liste per Makro ändern
Verfasst: Di, 02.07.2013 15:55
von lorbass
Schau mal, ob dir
Michael Dannenhöfers StarBasic / OpenOffice.org Basic FAQ dienlich ist:
Wie kann man per Makro ein Arbeitsblatt aktiveren?. Der Kontext ist zwar ein anderer, aber vielleicht hilft's…
Gruß
lorbass
Re: Verknüpfte Zelle einer Liste per Makro ändern
Verfasst: Di, 02.07.2013 16:05
von delta9
Hallo Lorbass,
nein, das hat nichts mit meinem Problem zu tun.
Ich möchte eine Eigenschaft ändern, die ich auslesen kann aber aus irgendeinem Grund nicht überschreiben kann.
Stefan
Re: Verknüpfte Zelle einer Liste per Makro ändern
Verfasst: Di, 02.07.2013 17:49
von delta9
Ich glaube, ich bin einen kleinen Schritt weiter, indem ich die Zelle als Strukt (?) definiere.
Code: Alles auswählen
dim VerknZelle as NEW com.sun.star.table.CellAddress
VerknZelle = Objekt.ValueBinding.BoundCell
VerknZelle.Sheet = 10
Objekt.ValueBinding.BoundCell = VerknZelle
Die Letzte Zeile meldet den Fehler: "Lesefehler, Eigenschaft ist schreibeschützt"
Stefan
Re: Verknüpfte Zelle einer Liste per Makro ändern
Verfasst: Di, 02.07.2013 18:12
von Stephan
Die Letzte Zeile meldet den Fehler: "Lesefehler, Eigenschaft ist schreibeschützt"
naja, .BoundCell ist eine schreibgeschützte Eigenschaft, sagt zumindest die IDL-Referenz:
http://www.openoffice.org/api/docs/comm ... #BoundCell
Zu der Ausgangsfrage kann ich hingegen nichts sagen weil ich nicht verstehe worum es geht.
Gruß
Stephan
Re: Verknüpfte Zelle einer Liste per Makro ändern
Verfasst: Di, 02.07.2013 21:55
von F3K Total
Hi,
ist etwas komplizierter,
hier habe ich eine Lösung von
komma4 für ein Kombinationsfeld gefunden, geht auch für ein Listenfeld:
Code: Alles auswählen
Sub S_change_Boundcell
Dim oboundcelladdress as new com.sun.star.table.CellAddress
Dim oNamedValue as new com.sun.star.beans.NamedValue
oboundcelladdress.sheet = 1'neues Blatt
oboundcelladdress.column = 1'neue Spalte
oboundcelladdress.row = 1'neue Zeile
oNamedValue.Name = "BoundCell"
oNamedValue.Value = oboundcelladdress
odoc = thiscomponent
aBinding = odoc.createinstance("com.sun.star.table.CellValueBinding")
aBinding.Initialize(Array(oNamedValue))
olst1 = thiscomponent.Sheets.Tabelle1.drawpage.forms.Formular.lst1'Listboxmodel
olst1.setvaluebinding(aBinding)
End Sub
Viel Erfolg
Gruß R
Re: Verknüpfte Zelle einer Liste per Makro ändern
Verfasst: Mi, 03.07.2013 09:05
von delta9
Hallo R.
danke! Hat auf Anhieb funktioniert, da wäre ich nie drauf gekommen.
Noch einen Schönheitsfehler hat das ganze:
Man kann, wenn man händisch auf die Eigenschaften der Listbox geht wählen:
Inhalt der Verknüpften Zelle: Der Ausgewählte Eintrag
Inhalt der Verknüpften Zelle: Position des ausgewählten Eintrags
Ich habe die Position, leider ändert das Makro aber in ausgeählter Eintrag.
Beim röntgen finde ich keine Eigenschaft, die dieser entsprechen könnte.
Stefan
Re: Verknüpfte Zelle einer Liste per Makro ändern
Verfasst: Di, 09.07.2013 11:15
von delta9
Jetzt habe ichs rausgefunden. Wenn man den anstatt
Code: Alles auswählen
aBinding = odoc.createinstance("com.sun.star.table.CellValueBinding")
schreibt:
Code: Alles auswählen
aBinding = odoc.createinstance("com.sun.star.table.ListPositionCellBinding")
dann wird der Index (Position) des ausgewählten Eintrags in die Zelle geschrieben und nicht der in der Listbox angezeigte Text.
Stefan
Re: [gelöst] Verknüpfte Zelle einer Liste per Makro ändern
Verfasst: Di, 09.07.2013 21:49
von F3K Total
Klasse,
wie bist du darauf gekommen?
Gruß R