2016-08-23 2 views
1

Ich habe eine rechteckige Form zu einer Tabelle hinzugefügt. Ich möchte nun ein Makro für das Event RectangleA_Click() verwenden. Ich kenne den Namen der Form ist RectangleA wie ich das unter Unter haben:_Click() Ereignis nicht feuern sub VBA Excel

Sub f() 
Dim Shape As Shape 
For Each Shape In ActiveSheet.Shapes 
    Debug.Print Shape.Name 
Next 
End Sub 

ich den Code geschrieben haben:

Private Sub RectangleA_Click() 
    MsgBox "hello" 
End Sub 

In dem betreffenden Blatt Objektraum im Editor. Beim Anklicken der Form wird das Unterprogramm nicht aufgerufen.

Ich bin mir bewusst, dass ich dies zuweisen kann mit der rechten Maustaste> Makro zuweisen, aber würde dies vermeiden, da es wie ein unnötiger Schritt scheint. Mir ist auch bewusst, dass es Active X-Steuerelemente gibt, die das Makro automatisch zuweisen, wiederum würde ich es vorziehen, dies möglichst zu vermeiden.

+0

Ich denke, Sie können nur das Click-Ereignis hinzufügen, indem Sie das Makro mit Formen (und Formularsteuerelemente auf dem Blatt eingefügt) zuweisen. Wenn Sie ActiveX-Steuerelemente verwenden, können Sie die Click-, Dbl_Click-, MouseDown-Ereignisse usw. im VBE zuweisen. –

Antwort

3

So etwas wie dies funktionieren kann:

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

Aber es wird viel einfacher, nur auf der rechten Maustaste> Makro zuweisen sein.

Dieser obige Code ist nützlich, wenn Sie die Form erstellen und dann nach der Erstellung ein Makro zuweisen müssen.

Sie können in das OnAction-Ereignis schauen, um die Antwort auf Besonderheiten zu erhalten, wenn dies nicht hilft.

Verwandte Themen