我是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"
和其他组合,但它们似乎都不起作用...... 谢谢你的帮助!
答案 0 :(得分:1)
难以证明是消极的,但我相信这是不可能的。使用Excel 2013进行测试,我可以确认以下内容不起作用:
尝试使用隐藏SmartArt的选择
Worksheet_SelectionChanged
不会开火。如果你改变了
从单元格到SmartArt对象的选择,您将无法获得
事件。当你失去对焦点的关注时,你会得到一个事件
SmartArt然后回到牢房。
您可以选择SmartArt对象,然后进行调试以检查所选内容。对象属于类型
Object/Shape
和监视窗口表明它暴露了一个
OnAction
属性,但尝试设置此属性将抛出
错误。
我认为上述两个问题意味着从SmartArt获取OnAction
事件将非常困难(如果不是不可能的话)。