Visio VBA:如何将选中的单个形状移动到指定位置
解决Visio选中单个形状移动的问题
错误原因
你直接用vShp(1)访问选中形状报错,是因为Visio的Selection集合(假设vShp是该对象)不支持直接下标索引,必须通过Item方法指定要操作的形状序号。
解决方案
方法1:通过Item方法直接访问指定序号的形状
如果vShp是ActiveWindow.Selection对象,修改代码为:
vShp.Item(1).Cells("PinX").Formula = "230mm" vShp.Item(1).Cells("PinY").Formula = "870mm"
方法2:先将目标形状赋值给变量再操作(更易读)
Dim targetShape As Shape ' 选中集合中的第1个形状(序号从1开始) Set targetShape = ActiveWindow.Selection.Item(1) targetShape.Cells("PinX").Formula = "230mm" targetShape.Cells("PinY").Formula = "870mm"
方法3:按形状名称指定目标(如果知道形状名称)
Dim targetShape As Shape ' 替换为你的形状名称 Set targetShape = ActiveWindow.Selection.ItemU("MyShape") targetShape.Cells("PinX").Formula = "230mm" targetShape.Cells("PinY").Formula = "870mm"
补充说明
- Visio的
Selection集合中,形状序号从1开始计数。 - 如果只需要移动当前选中的唯一形状,直接用
PrimaryItem访问主选中形状会更稳妥:
ActiveWindow.Selection.PrimaryItem.Cells("PinX").Formula = "230mm" ActiveWindow.Selection.PrimaryItem.Cells("PinY").Formula = "870mm"
内容的提问来源于stack exchange,提问作者Geographos
相关产品推荐
相关产品推荐

