【发布时间】:2019-02-02 02:59:14
【问题描述】:
我需要在 Visio 中引用一个选定的(通过鼠标单击,它只需要是一个选择)形状。然而,形状可能在一个组中。 当我在组中选择一个形状时,我似乎无法让它工作,shp 对象仍然是空的。
Sub selectTest()
Dim sel As Visio.Selection
Set sel = ActiveWindow.Selection
Dim shp As Visio.Shape
Set shp = sel.PrimaryItem
If Not shp Is Nothing Then
MsgBox "It worked"
Else
MsgBox "No shape in sel"
End If
End Sub
选择“顶级”组时,它可以工作。 当组内部的形状也是如此,它也是如此,它没有。 When a shape which is not in a group is selected, it works again.
上下文:我想从上下文菜单中触发自定义 VBA 代码。当您右键单击该形状时,它会自动被选中。
当一个形状在一个组中时,如何获得对它的引用?
编辑:进一步澄清:我的文档中的形状都有相应的数据库条目。我想(通过 XML)向上下文菜单添加一个自定义删除按钮(有效),这应该调用一个删除方法,该方法获取调用该方法的形状作为参数,以便它可以搜索相应的数据库条目并删除使用 shape.delete 删除形状(及其所有子形状)之前的那个(以及任何子形状的条目,如果所选形状是一个组)
【问题讨论】:
-
我明白你的意思。换句话说,您想要“鼠标指针位置的形状” - 对吗?