Как привязать своё PopUp меню к листу?

Программирование на Visual Basic for Applications
Vovchic
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 28.12.2004 (Вт) 12:21

Как привязать своё PopUp меню к листу?

Сообщение Vovchic » 28.12.2004 (Вт) 15:41

Добрый день.

Суть проблемы:
хочется, чтобы по нажатию правой кнопки мыши выскакивала менюшка - модификация стандартной. Но при этом в других открытых книгах выскакивала стандартная менюшка.

Добавление делается так:

Sub AddPopUp()

Set mControls = Application.CommandBars("cell").Controls
With mControls
Set mButton = .Add(Type:=msoControlButton, ID:=850)
With mButton
.Caption = "Пунктик"
.OnAction = "AddStr"
End With

End With

End Sub

Заранее спасибо.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.12.2004 (Вт) 15:44

Рекомендуется заценить обработчик события Worksheet_BeforeRightClick :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Vovchic
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 28.12.2004 (Вт) 12:21

Сообщение Vovchic » 28.12.2004 (Вт) 16:02

Ну до этого я догадался.

Sub DeletePopUp() ' creates the custom popup menu
Application.CommandBars("cell").Controls.Item("Пунктик").Delete
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
Cancel As Boolean)
If Not Application.Intersect(Target, Target) Is Nothing Then
AddPopUp
End If
End Sub

Осталось только убрать эти пункты после закрытия менюшки. А вот как сделать событие на закрытие менюшки - я не в курсе...
:?:

Vovchic
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 28.12.2004 (Вт) 12:21

Сообщение Vovchic » 28.12.2004 (Вт) 16:22

Вопрос отпадает.
Проблема решилась.
Нашел стандартный пример :)

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
Cancel As Boolean)
For Each icbc In Application.CommandBars("cell").Controls
If icbc.Tag = "brccm" Then icbc.Delete
Next icbc
If Not Application.Intersect(Target, Range("D1:D10")) _
Is Nothing Then
With Application.CommandBars("cell").Controls _
.Add(Type:=msoControlButton, before:=6, _
temporary:=True)
.Caption = "New Context Menu Item"
.OnAction = "MyMacro"
.Tag = "brccm"
End With
End If
End Sub

Это даже еще лучше:)


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList