Visio Master Shape to update shape text based on shape data field

445 views Asked by At

I have a Visio (365) Master Shape I am creating for my work. I have a number of defined shape data fields, such as Type / Status / Display / Category etc... These are defined as defined as shape data and not as shape data set and can be accessed in formulas with the Prop.x notation.

I have selected the master shape for editing from the stencil, opened it for editing, selected the shape and then selected from the menu bar / ribbon 'Insert -> Field', and have tried to display shape text by inserting a field with a custom formula:

=IF(Prop.Display,IF(Prop.Type <> "",Prop.Type,""),"")

The shape data field 'Display' is Boolean with default set to TRUE. The field 'Type' is a delimited list / dropdown that initially starts out blank.

The objective is to have the user select a Type (when they know what it is), and the formula (in theory) should update the shape text to display that selection.

The problem is that when I test the shape and make changes to either the Type field or the Display field nothing happens - no text is ever displayed.

I'm sure that I am missing something simple here, but I cannot figure out what that is. Can anyone point me in the right direction? Any help greatly appreciated.

Cheers

The Frog

2

There are 2 answers

0
The Frog On BEST ANSWER

I figured it out!

The formula to use is the following:

=IF(AND(Prop.Display,FORMULAEXISTS(Prop.Type)),Prop.Type,CHAR(32))

The combination of Prop.Display (boolean) being set to True, AND Prop.Type actually having something selected - tested with the FORMULAEXISTS function, creates a True / False scenario, where true provides the value of Prop.Type, and false provides a blank space - doesn't seem to like "" or CHAR(0) as a value so the single space character is the best I could do.

Cheers and many thanks for pointing me in the right direction.

The Frog

3
Surrogate On

I think this part of formula dont works: if(Prop.Type <> "",Prop.Type,"").

For compare text strings use STRSAME function, with syntax: STRSAME(Prop.Type,""). For empty string you can use LEN(Prop.Type)=0