_Click()事件未触发子VBA Excel

时间:2016-08-23 09:35:07

标签: excel vba excel-vba

我在电子表格中添加了一个矩形形状。我现在希望在事件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控件,如果可能的话,我宁愿避免这种情况。

1 个答案:

答案 0 :(得分:3)

这样的事情可能有用:

Sub AssignMacroToShape()
   Set shpTemp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 1680#, 594#, 120#, 74.25)
     shpTemp.OnAction = ActiveWorkbook.Name & "!Macro Name"
End Sub

但右键单击>会更容易分配宏。

如果您需要创建形状,然后在创建后为其指定宏,则上面的代码非常有用。

如果没有帮助,您可以查看OnAction事件以获得具体的答案。