VBA - 在SmartArtNodes上使用.onAction

时间:2017-07-25 03:22:11

标签: excel vba excel-vba

我是VBA的新手,并尝试使用smartArt.Nodes根据某些单元格数据动态生成组织结构图。我能够生成图表没有问题。现在,我希望能够通过单击显示图表特定节点的更多详细信息。我知道我们可以使用Excel中的绘图工具将smartArts转换为Shapes,然后在它们上使用.onAction,如:

ActiveSheet.Shapes(name1).OnAction = "detail"

但是,有没有办法使用VBA实现与smartArt.nodes相同的功能?假设我有一个名为" nodes1"的节点。我试过了:

nodes1.Shapes.OnAction = "detail"

Dim objShape As Shape
Dim SmartArtNod As SmartArtNode
Set objShape = ActiveSheet.Shapes(1)
Set SmartArtNod = objShape.SmartArt.AllNodes(1)

SmartArtNod.Shapes(1).OnAction = "detail"

和其他组合,但它们似乎都不起作用...... 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

难以证明是消极的,但我相信这是不可能的。使用Excel 2013进行测试,我可以确认以下内容不起作用:

  • 尝试使用隐藏SmartArt的选择 Worksheet_SelectionChanged不会开火。如果你改变了 从单元格到SmartArt对象的选择,您将无法获得 事件。当你失去对焦点的关注时,你会得到一个事件 SmartArt然后回到牢房。

  • 您可以选择SmartArt对象,然后进行调试以检查所选内容。对象属于类型 Object/Shape和监视窗口表明它暴露了一个 OnAction属性,但尝试设置此属性将抛出 错误。

我认为上述两个问题意味着从SmartArt获取OnAction事件将非常困难(如果不是不可能的话)。