Author Topic: Visio List Shape - how to guard PinX and PinY formulas when item added to list?  (Read 441 times)

0 Members and 1 Guest are viewing this topic.

Visisthebest

  • Hero Member
  • *****
  • Posts: 733
I have become quite fond of the Visio List Shape functionality, as described here:
https://bvisual.net/2022/07/06/a-visio-list-shape-is-also-a-container/

(rarely I use a Container/List combo, mostly just a List)

The problem I encounter is that for a solution I need formulas in the List shape for PinX and PinY. However, when a list item (shape) is added to the List shape, PinX and PinY are overwritten with a value and the formula is lost. GUARD()-ing the PinX and PinY formulas doesn't help, the formulas still get erased.

Is there another way to protect the PinX and PinY formulas from this behavior of the list shape when an item is added? Thank you for sharing your ideas for a solution!
Visio 2021 Professional

Yacine

  • Hero Member
  • *****
  • Posts: 3094
Yes, the setatref group of functions should help.
Wapperdude has written a nice post about them.
« Last Edit: November 26, 2022, 02:32:26 AM by Yacine »
Yacine

Visisthebest

  • Hero Member
  • *****
  • Posts: 733
Thank you Yacine checked out the MS info on SETATREF():
https://learn.microsoft.com/en-us/office/client-developer/visio/setatref-function

That should work will read up on it from Wapperdude's article as well thank you!
Visio 2021 Professional

Visisthebest

  • Hero Member
  • *****
  • Posts: 733
By the way, is there also a DEPENDSON() that fires when a formula changes (not just the resulting value)? That would be pretty useful in some cases.
Visio 2021 Professional

wapperdude

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 4599
  • Ideas Visio-lized into solutions
My guess is maybe.  Dependson()  is based upon a change in the reference cell.  Presumably, that means the cells value.  But what if  setf() or vba places a new formula?  I'm not sure.  Try a simple test case.  Say set a shape"s width to some value only when color changes.  This allows you to enter a color from GUI, or edit shape sheet to use setf() to enter an RGB  value, or use code to place a formula.
« Last Edit: November 25, 2022, 03:39:36 PM by wapperdude »
Visio 2019 Pro

Visisthebest

  • Hero Member
  • *****
  • Posts: 733
Wapperdude thank you again for your comprehensive articles on the SETATREF functions!

It is some SETATREF(SETATREFEVAL(SETREFEXPR())) formula construction magic that completely solved this problem. Superuseful!
Visio 2021 Professional