Seite 1 von 1

Verknüpfte Zellen in Formular-Steuerelementen beim kopieren NICHT erhalten

Verfasst: Mi 17. Feb 2016, 14:39
von ffakir
Hallo Community,

leider bin ich gerade nach langer Nutzung von Calc auf ein Problem gestoßen, das ich nicht mit dem Wiki oder den vorhandenen Threads hier lösen konnte, hoffentlich ist es aber völlig trivial:

Ich habe in einer Calc-Datei erstmal zwei Tabellen angelegt: "Gewichtung" und "Vorlage".
In Vorlage sind mehrere Checkboxen ("Markierfelder") enthalten, die ihren Wert jeweils auf eine Zelle in der gleichen Tabelle überträgt. Unter "Eigenschaften:Markierfeld" > "Daten" > "Verkünpfte Zelle" steht zum Beispiel "C3".
Andere Zellen in der Tabelle beziehen sich auf Zellen in der Tabelle Gewichtung. (z.B. "=Gewichtung.D5")

Das Ziel ist nun, dass ich die Tabelle "Vorlage" beliebig oft duplizieren kann und dabei:
1. Die auf die Tabelle "Gewichtung" referenzierten Zellen weiter auf diese referenzieren (Ist schon so)
2. Die "Markierfelder" immer in den neuen Kopien mit der entsprechenden Zelle verknüpft bleiben (Ist nicht so)

in den Kopien sind die Felder immer mit "Vorlage.C3" verknüpft und nicht weiterhin mit "C3" der neuen Tabelle.
Wie kann ich Calc dazu bringen, zu tun was ich vorhabe? Gibt's so etwas wie "this.C3" in den Eigenschaften von Formular-Steuerelementen?

Viele Grüße,

Fabian

Re: Verkünpfte Zellen in Formular-Steuerelementen beim kopieren NICHT erhalten

Verfasst: Mi 17. Feb 2016, 17:05
von F3K Total
Hi,
habe alle mir einfallenden Möglichkeiten ausprobiert, NEIN, geht nicht.
Einzige Möglichkeit: Ein Makro, das die verknüpften Zellen ändert.
Anbei ein Beispiel, es werden alle Markierfelder auf das aktuelle Blatt verlinkt, deren Namen mit Markier beginnen.

Code: Alles auswählen

Sub S_Relink_Checkboxes
    Dim oNamedValue as new com.sun.star.beans.NamedValue
    oSheet = ThisComponent.CurrentController.ActiveSheet
    nSheet = oSheet.RangeAddress.Sheet
    oform = oSheet.drawpage.Forms(0)
    ncounter = 0
    for i = 0 to oform.count - 1
        oControl = oform(i)
        if Left(oControl.name,7) = "Markier" then
            nCounter = nCounter + 1
            oValueBinding = oControl.ValueBinding
            aBoundCellAddress = oControl.ValueBinding.BoundCell
            aBoundCellAddress.Sheet = nSheet
            oNamedValue.Name  = "BoundCell"
            oNamedValue.Value = aBoundCellAddress
            oCellValueBinding = ThisComponent.createInstance("com.sun.star.table.CellValueBinding")
            oCellValueBinding.Initialize(Array(oNamedValue))
            oControl.setValueBinding(oCellValueBinding)
        endif
    next i
    msgbox "Fertig, "+nCounter+" Verknüpfungen auf dieses Blatt gesetzt"
End Sub
Damit das Makro laufen darf, stellst du unter Extras/Optionen/LibreOffice/Sicherheit/Makrosicherheit mindestens die Stufe Mittel ein, dann wirst du beim Öffnen von Dokumenten gefragt, ob du Makros ausführen möchtest.

Die Markierfelder auf Tabelle2 der angehängten Datei, sind noch auf Tabelle1 verlinkt, drücke die Schaltfläche und schau was passiert.

Gruß R

Re: Verknüpfte Zellen in Formular-Steuerelementen beim kopieren NICHT erhalten

Verfasst: Mi 17. Feb 2016, 19:43
von ffakir
Super, vielen Dank, funktioniert!

Sollte mich mittelfristig wohl mal mit Makros auseinandersetzen. Wäre das vielleicht auch was für ein Feature Request? Man könnte ja in das Verknüfte Feld einfach ein Sonderzeichen einfügen (!, $, this. oder so).

Re: Verknüpfte Zellen in Formular-Steuerelementen beim kopieren NICHT erhalten

Verfasst: Mi 17. Feb 2016, 20:15
von F3K Total
Hi,
ffakir hat geschrieben:Wäre das vielleicht auch was für ein Feature Request?
Mußt su selber wissen, hier handelt es sich um ein Anwenderforum, da mußt du dich an LibreOffice wenden. Ich halte dies für wenig aussichtreich. Mir ist so ein Wunsch in den letzten Jahren auf jeden Fall noch nie untergekommen.
Gruß R