Всем доброго времени суток. Имеется вот такой код для создания пользовательской панели: [vba]
Код
Sub AddCustomMenu() ' Добавление меню With Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, Temporary:=True) .Caption = "Архив" With .Controls ' Добавление и настройка первого пункта With .Add(Type:=msoControlButton) .FaceId = 280 .Caption = "Просмотр" .OnAction = "Макрос1" End With ' Добавление вложенного меню With .Add(Type:=msoControlPopup) .Caption = "База данных" With .Controls ' Добавление и настройка первого пункта _ вложенного меню With .Add(Type:=msoControlButton) .FaceId = 1643 .Caption = "Поставщики" .OnAction = "Макрос2" End With ' Добавление и настройка второго пункта _ вложенного меню With .Add(Type:=msoControlButton) .FaceId = 1000 .Caption = "Покупатели" .OnAction = "Макрос3" End With End With End With End With End With End Sub
[/vba] Известно, что для удаления панели достаточно: [vba]
Код
Application.CommandBars(1).Delete ' через индекс панели 'или Application.CommandBars("Имя панели").Delete 'через имя панели
[/vba] Но вот собственно вопрос. Как узнать индекс панели или её имя если она создана вышеприведенным кодом?
Всем доброго времени суток. Имеется вот такой код для создания пользовательской панели: [vba]
Код
Sub AddCustomMenu() ' Добавление меню With Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, Temporary:=True) .Caption = "Архив" With .Controls ' Добавление и настройка первого пункта With .Add(Type:=msoControlButton) .FaceId = 280 .Caption = "Просмотр" .OnAction = "Макрос1" End With ' Добавление вложенного меню With .Add(Type:=msoControlPopup) .Caption = "База данных" With .Controls ' Добавление и настройка первого пункта _ вложенного меню With .Add(Type:=msoControlButton) .FaceId = 1643 .Caption = "Поставщики" .OnAction = "Макрос2" End With ' Добавление и настройка второго пункта _ вложенного меню With .Add(Type:=msoControlButton) .FaceId = 1000 .Caption = "Покупатели" .OnAction = "Макрос3" End With End With End With End With End With End Sub
[/vba] Известно, что для удаления панели достаточно: [vba]
Код
Application.CommandBars(1).Delete ' через индекс панели 'или Application.CommandBars("Имя панели").Delete 'через имя панели
[/vba] Но вот собственно вопрос. Как узнать индекс панели или её имя если она создана вышеприведенным кодом?and_evg
Public myCtrl Sub AddCustomMenu() ' Добавление меню Set myCtrl = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, Temporary:=True) With myCtrl '... End With End Sub
Sub test() myCtrl.Delete End Sub
[/vba]
and_evg, здравствуйте, а если так? [vba]
Код
Public myCtrl Sub AddCustomMenu() ' Добавление меню Set myCtrl = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, Temporary:=True) With myCtrl '... End With End Sub
Manyasha, _Boroda_, Спасибо. Но интересно (на будущее), можно ли как либо узнать имя или индекс панели, при создании которой не указывалось данных параметров.
Manyasha, _Boroda_, Спасибо. Но интересно (на будущее), можно ли как либо узнать имя или индекс панели, при создании которой не указывалось данных параметров.and_evg
Sub test1() For Each ctr In Application.CommandBars(1).Controls If ctr.Caption = "Архив" Then Debug.Print ctr.Index Application.CommandBars(1).Controls(ctr.Index).Delete Exit For End If Next ctr End Sub
Sub test1() For Each ctr In Application.CommandBars(1).Controls If ctr.Caption = "Архив" Then Debug.Print ctr.Index Application.CommandBars(1).Controls(ctr.Index).Delete Exit For End If Next ctr End Sub