我目前在Visio中有一个程序,当将自定义模具中的特定形状拖到屏幕上时,会出现一个用户窗体,并向用户询问一个带有组合框的问题,供用户选择答案。 / p>
根据选择的答案,该对象的形状数据应更改。
我面临的问题是我不确定如何自动定位形状的ID,然后更改其形状数据。由于可以放置多个形状,因此我无法为每个ID手动编写新的代码。
Image: Shapesheet of the shape running the macro on drop. "Form" is the user form.
如果有人可以帮助我解决这个问题,我将不胜感激。
谢谢
答案 0 :(得分:4)
我想知道CALLTHIS
ShapeSheet函数是否在这里更有用,因为它传递了对调用形状的引用。因此,例如,在EventDrop
单元格中添加以下公式:
CALLTHIS("ThisDocument.OnMyShapeDrop","Drawing001")
,然后添加以下辅助代码:
Public Sub OnMyShapeDrop(shp As Visio.Shape)
MsgBox "Shape dropped - ID = " & shp.ID, vbOKOnly, "Shape Dropped"
End Sub
请注意,我已经将代码放在ThisDocument
类中,但是它可以存在于任何可访问的模块中。另请注意,项目名称(Drawing001)可能是不带扩展名的文件名。