The cross-functional flowchart template is possibly one that I use most frequently, and I do like the way that the Function Shape Data value is automatically evaluated from the Swimlane that is is within. But why did Microsoft issue the template without the same feature for the Phases? This article describes how to fix that issue, and is also a plea to Microsoft to correct it in a future release….
So, all of the flowchart shapes contain a Shape Data row named Function, as in the following screenshot, and the value is automatically updated to that entered into the Swimlane header. If the user updates the header text, or moves the shape between lanes, then the value gets updated.
Great, but how does it do it? If I look in the ShapeSheet of any of these flowchart shapes, then I find the following:
The relevant formula is in the Prop.Function cell:
=IFERROR(CONTAINERSHEETREF(1,”Swimlane”)!User.VISHEADINGTEXT,””)
It is thus getting the value of the User.VisHeadingText cell in the first container shape with the category “Swimlane”.
If I look in the Swimlane master shape, I can indeed find that User-Defined cell:
This User.visHeadingText cell contains the formula:
=SHAPETEXT(Sheet.7!TheText)
It needs to reer to a sub-shape in the group because that is where the text is actually entered.
However, the user can also add multiple Separator shapes to the diagram, and label those too with unique text.
So, I checked out the Separator master to see if it could be easily enhanced to be used in a similar way.
Fortunately, I can edit masters in the local Document Stencil, but I should also ensure that the Match master by name on drop is ticked, in order to avoid multiple masters being created after my changes,
Then I opened up the master to edit it. I noted that the category is Phase for this shape.
I also noted that the text, whose default is “Phase”, is actually part of Sheet.6, so I created a new User-Defined cell name visHeadingText, and entered the following formula:
=SHAPETEXT(Sheet.6!TheText)
I could then edit one of the flowchart shapes in the Document Stencil (always remembering to check the Match master by name on drop setting).
I added a row named Phase, with the label “Phase”
I entered the formula:
=IFERROR(CONTAINERSHEETREF(1,”Phase”)!User.VISHEADINGTEXT,””)
I then created a Shape Data Set from this shape, and saved the master, accepting changes to existing shapes.
Now, I could edit any other masters and apply the Shape Data Set, and save them.
I did have to move any existing shapes in my diagram to “wake up” the formula, but then they worked fine, as do any newly dropped shapes. They now Have a Phase Shape Data row which is automatically updates from the Separator/Phase that it lies within.
So, I can now have my own custom version of the Cross-Functional Flowchart template that contains updated master shapes…
The Microsoft Visio engine does also automatically add the Function shape data row to ANY shape that is placed in a Swimlane. I haven’t bothered with that here ….
Abhi M says
Is it possible to pull the Heading Text of the CFF Container as well?
David Parker says
Well, my VBA code does add the User.visHeadingText cell to the CFF Container master in the document! However, the flow shapes are not directly contained within the CFF Container shape (you can see this because only the swimlanes are highlit in green when you select a flow shape). If you are using the built-in CFF Container shape, and there is only one of these on the page, then any cell can have the following formula:
=CFF Container!User.visHeadingText
I normally re-name the page, and then insert this into the CFF Container text, which can be done with the Insert/Text/Field/Page Info/Name action. This pushes the following function in:
=PAGENAME()
Then any other shape can also use the PageName() function too.
Al says
Hi David,
How can I have functions on both sides (left and right ) of a horizontal SwimLane in Visio?
thanks for your reply
Al
David Parker says
I have recorded a video to show you how this can be done : https://youtu.be/3DChEVrzlv0