[gelöst] Verknüpfte Zelle einer Liste per Makro ändern

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

Moderator: Moderatoren

delta9
****
Beiträge: 131
Registriert: Fr, 19.03.2010 15:28

[gelöst] Verknüpfte Zelle einer Liste per Makro ändern

Beitrag 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
Zuletzt geändert von delta9 am Di, 09.07.2013 11:17, insgesamt 2-mal geändert.
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: Verknüpfte Zelle einer Liste per Makro ändern

Beitrag 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
delta9
****
Beiträge: 131
Registriert: Fr, 19.03.2010 15:28

Re: Verknüpfte Zelle einer Liste per Makro ändern

Beitrag 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
delta9
****
Beiträge: 131
Registriert: Fr, 19.03.2010 15:28

Re: Verknüpfte Zelle einer Liste per Makro ändern

Beitrag 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
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Verknüpfte Zelle einer Liste per Makro ändern

Beitrag 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
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Verknüpfte Zelle einer Liste per Makro ändern

Beitrag 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
delta9
****
Beiträge: 131
Registriert: Fr, 19.03.2010 15:28

Re: Verknüpfte Zelle einer Liste per Makro ändern

Beitrag 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
delta9
****
Beiträge: 131
Registriert: Fr, 19.03.2010 15:28

Re: Verknüpfte Zelle einer Liste per Makro ändern

Beitrag 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
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: [gelöst] Verknüpfte Zelle einer Liste per Makro ändern

Beitrag von F3K Total »

Klasse,
wie bist du darauf gekommen?
Gruß R
Antworten