2016-08-23 2 views
1

Я добавил прямоугольную форму в таблицу. Теперь я хочу использовать макрос в событии RectangleA_Click(). Я знаю, что имя форма является RectangleA как у меня ниже суб:_Click() событие не срабатывает sub VBA Excel

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

Я думаю, что вы можете добавить событие Click, назначив макрос формами (и элементами управления формой, вставленными на листе). Если вы используете элементы управления ActiveX, вы можете иметь события Click, Dbl_Click, MouseDown и т. Д. И назначать их в VBE. –

ответ

3

Нечто подобное может работать:

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

Но это будет намного проще просто щелкните правой кнопкой мыши> Назначить макрос.

Этот вышеприведенный код полезен, если вам нужно создать форму, а затем назначить макрос после создания.

Вы можете посмотреть событие OnAction, чтобы получить ответ на конкретные вопросы, если это не поможет.

Смежные вопросы