SETATREF Function

Leitet aktualisierte Werte, die sich aus Aktionen in der Benutzeroberfläche (UI) oder Automation ergeben, an eine andere Zelle um.

Syntax

SETATREF(reference [, set_expression [, ignore_eval ]])

Parameter

Name Erforderlich/Optional Datentyp Beschreibung
reference
Erforderlich
String
Ein Bezug auf die Zelle, in die Aktualisierungen umgeleitet werden.
set_expression
Optional
String
Ein Ausdruck, der reference zugewiesen wird.
ignore_eval
Optional
Boolescher Wert
Wenn TRUE, wird die SETATREF-Funktion zu (0) 0 ausgewertet; , wenn FALSE (Standard) die SETATREF-Funktion zum Wert des Verweises ausgewertet wird.

Hinweise

Wenn eine Benutzeraktion im Zeichnungsfenster oder eine Automation-Methode bewirkt, dass Microsoft Visio eine Zelle aktualisiert, die eine SETATREF-Formel enthält, wird der Wert stattdessen an die Zelle umgeleitet, auf die die SETATREF-Formel verweist ( Verweis). Die Formel in der Zelle mit der SETATREF-Funktion bleibt erhalten.

Wenn set_expression nicht angegeben wird, wird der wert, der auf der Benutzeroberfläche oder mithilfe von Automation festgelegt wurde, der Zelle zugewiesen, auf die verwiesen wird. Andernfalls wird der Inhalt von set_expression der Zelle zugewiesen, auf die verwiesen wird. Dadurch kann der neue Wert geändert oder transformiert werden, bevor er der Zelle zugewiesen wird, auf die verwiesen wird.

Die SETATREF-Funktion besitzt zwei verwandte Funktionen:

  • Die SETATREFEXPR-Funktion, die Sie verwenden können, um den neuen Wert in set_expression darzustellen. Beispiel: eine set_expression von SETATREFEXPR()-2 in. könnte verwendet werden, um 2 Zoll vom SETATREFEXPR-Ergebnis zu subtrahieren.

  • Die SETATREFEVAL-Funktion, mit der Sie angeben können, dass ein Teil der set_expression ausgewertet und durch das Ergebnis ersetzt werden soll.

Die SETATREF-Funktion ist für die Verwendung in Zellen konzipiert, die durch Benutzeraktionen im Zeichnungsfenster geändert werden können. Folgende Zellen werden unterstützt:

  • Abschnitt ShapeTransform - Zelle Width, Height, Angle, PinX und PinY

  • Abschnitt Text Transform - Zelle TxtWidth, TxtHeight, TxtAngle, TxtPinX und TxtPinY

  • Abschnitt 1-D Endpoints - Zelle BeginX, BeginY, EndX und EndY

  • Abschnitt Controls - Zelle Controls.X und Controls.Y

  • Shape Data section

Da SETATREF den Speicherort von Zellwertänderungen ändert, wird das Auslösen von Ereignissen beeinflusst. Wenn eine Zelle SETATREF enthält, werden das FormulaChanged-Ereignis und das CellChanged-Ereignis für die von SETATREF referenzierte Zelle ausgelöst. Wenn eine Zelle, die SETATREF ENTHÄLT, auch SETATREFEXPR enthält, wird das FormulaChanged-Ereignis auch für die Zelle ausgelöst, die SETATREF enthält, da ein Funktionsparameter geändert wird.

Beachten Sie folgende weiteren wichtigen Hinweise zur SETATREF-Funktion:

  • SETATREF-Funktionen können bis zu 10 Referenzen auf andere SETATREF-Funktionen verketten.

  • Zellen können zusätzlich zur SETATREF-Funktion andere Ausdrücke enthalten, einschließlich mehrerer Vorkommen von SETATREF in einer einzigen Zelle.

  • Wenn Shapes verbunden werden, folgt Visio der SETATREF-Referenzkette innerhalb desselben Blatts und platziert Klebeformeln in der referenzierten Zelle.

  • Die Automatisierung erkennt die SETATREF-Funktion und folgt der Kette referenzierter Zellen.

  • Ebenso wie GUARD schützt SETATREF die Zellen nicht vor Änderungen, die über die SETF-Funktion im ShapeSheet-Fenster vorgenommen wurden.

Beispiel 1

Angenommen, ein Shape besitzt die benutzerdefinierte Eigenschaft Breite und die Zelle Width im Abschnitt Shape Transform enthält folgende Formel:

=SETATREF(Prop.Width)

Wenn ein Benutzer die Breite der Form auf der Benutzeroberfläche ändern würde, wird der neue Wert der Zelle Prop.Width und nicht der Zelle Width im Abschnitt ShapeTransform zugewiesen. die Formel in der Zelle Breite bleibt unverändert. Sie können die Breite des Shapes auch mithilfe von Shape-Daten festlegen.

Beispiel 2

Visio-Lösungen enthalten oft Shapes mit hierarchischen Beziehungen, bei denen untergeordnete Shapes verschoben werden müssen, wenn ein übergeordnetes Shape verschoben wird. Im folgenden Beispiel wird beschrieben, wie Sie diese Beziehung mithilfe der SETATREF-Funktion im ShapeSheet-Fenster verwalten können.

Folgende Formeln sind im Abschnitt Shape Transform des untergeordneten Shapes enthalten. Außerdem werden die benutzerdefinierten Zellen User.DeltaX und User.DeltaY definiert, die den Abstand von ParentShape verfolgen. Auf diese Weise kann das untergeordnete Shape verschoben werden, wenn das übergeordnete Shape verschoben wird, und die hierarchische Beziehung bleibt erhalten.

PinX =SETATREF(User.DeltaX, SETATREFEVAL(SETATREFEXPR() - ParentShape!PinX)) + ParentShape!PinX

PinY =SETATREF(User.DeltaY, SETATREFEVAL(SETATREFEXPR() - ParentShape!PinY)) + ParentShape!PinY

Wenn die untergeordnete Form über die Benutzeroberfläche verschoben wird, werden die neuen PinX- und PinY-Werte als Parameter in der SETATREFEXPR-Funktion festgelegt. Die SETATREF-Funktion wertet die in SETATREFEVAL eingeschlossene Formel aus und ersetzt PinX und PinY durch ihre Ergebnisse. Anschließend wird die resultierende Formel den Benutzerzellen zugewiesen, auf die in der SETATREF-Funktion verwiesen wird – User.DeltaX und User.DeltaY. Schließlich werden die von SETATREF (User.DeltaX oder User.DeltaY) zurückgegebenen Werte der Pinposition von ParentShape hinzugefügt, um die Pinposition des untergeordneten Shapes zu berechnen.