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

Code: Alles auswählen

Objekt.ValueBinding.BoundCell.Sheet = Blattnummer
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