Visio自定义形状的子形状如何引用主形状ShapeSheet数据
Visio自定义主控形状子形状引用父组属性解决方案
以下方案均无需编写VBA,仅通过ShapeSheet公式即可实现需求:
- 方案1:子形状直接引用父组(最简便,适配绝大多数场景)
Visio ShapeSheet原生支持子形状对父组的快捷引用规则,不需要填写父组名称或ID,仅需在目标属性前添加!前缀即可:
引用父组名称公式:=!Name()
引用父组自定义字段公式:=!User.MyUserField
该公式在主控编辑阶段即可正常解析,将主控拖放到页面后会自动绑定到当前实例的父组,不会关联到页面或其他形状。 - 方案2:多层嵌套组层级引用
如果你的自定义主控形状存在多层嵌套组结构,要向上引用指定层级的父组属性,使用Sheet.<层级数>!语法即可:
引用直接父组字段:=Sheet.1!User.MyUserField
引用上两级父组字段:=Sheet.2!User.MyUserField
按照嵌套层级递增数字即可定位到目标父组。 - 方案3:拖放自动绑定(兼容旧版Visio兜底方案)
如果你使用的是2016及更早版本的Visio,快捷引用可能存在兼容问题,可以通过父组的拖放事件公式自动绑定引用关系:- 在主控编辑界面选中顶层父组,打开其ShapeSheet
- 找到「事件」分类下的
EventDrop单元格,写入公式:=SETF(GetRef(Sheet.<子形状ID>!User.ParentField),"="&ID()&"!User.MyUserField") - 保存主控即可,后续每次拖放主控到页面时,系统会自动为子形状赋值当前实例父组的对应属性。
注意:所有公式均需在「编辑主控形状」界面下写入并保存主控后再测试,不要直接在页面上的形状实例中修改,否则修改不会同步到主控。
内容的提问来源于stack exchange,提问作者Offer
相关产品推荐
相关产品推荐

