我在电子表格中添加了一个矩形形状。我现在希望在事件RectangleA_Click()上使用宏。我知道形状的名称是RectangleA,因为我有以下子:
Sub f()
Dim Shape As Shape
For Each Shape In ActiveSheet.Shapes
Debug.Print Shape.Name
Next
End Sub
我写了代码:
Private Sub RectangleA_Click()
MsgBox "hello"
End Sub
在编辑器中的相关工作表对象空间中。单击形状时,不会调用子例程。
我知道我可以使用右键单击>分配此内容。分配宏,但宁愿避免这种情况,因为它似乎是一个不必要的步骤。我也知道有自动分配宏的Active X控件,如果可能的话,我宁愿避免这种情况。
答案 0 :(得分:3)
这样的事情可能有用:
Sub AssignMacroToShape()
Set shpTemp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 1680#, 594#, 120#, 74.25)
shpTemp.OnAction = ActiveWorkbook.Name & "!Macro Name"
End Sub
但右键单击>会更容易分配宏。
如果您需要创建形状,然后在创建后为其指定宏,则上面的代码非常有用。
如果没有帮助,您可以查看OnAction事件以获得具体的答案。