Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2010, 10:37   #1
Shlyapnik
Пользователь
 
Регистрация: 10.03.2010
Сообщений: 11
Печаль Проблема с контекстном меню в Excel 2007

Ситуация следующая:

Нарыл где-то пример создания собственного контекстного меню в Excel. Запустил, да действительно пример полностью раскрывает тему, но после него у меня пропало вообще в Excelе 2007 любое контекстное меню при работе с ячейками , пробовал полную переустановку офиса, не помогло . Пожалуйста, кто знает подскажите как вернуть стандартное контекстное меню, без него не как.

Код:

Option Explicit
 
Const PopUpCommandBarName As String = "TemporaryPopupMenu"

Sub DeletePopUp()
    On Error Resume Next
    CommandBars(PopUpCommandBarName).Delete
    On Error GoTo 0
End Sub

Sub CreatePopUp()
Dim cb As CommandBar, m As CommandBarPopup
    DeletePopUp
    Set cb = CommandBars.Add(PopUpCommandBarName, msoBarPopup, False, True)
    With cb
        With .Controls.Add(Type:=msoControlButton)
            .OnAction = "MyMacroName"
            .FaceId = 71
            .Caption = "Custom Menu 1"
            .TooltipText = "Custom Tooltip Text 1"
        End With
        With .Controls.Add(Type:=msoControlButton)
            .OnAction = "MyMacroName"
            .FaceId = 72
            .Caption = "Custom Menu 2"
            .TooltipText = "Custom Tooltip Text 2"
        End With
        With .Controls.Add(Type:=msoControlButton)
            .OnAction = "MyMacroName"
            .FaceId = 73
            .Caption = "Custom Menu 3"
            .TooltipText = "Custom Tooltip Text 3"
        End With
    
        Set m = .Controls.Add(Type:=msoControlPopup)
        With m
            .BeginGroup = True
            .Caption = "Sub Menu"
            
            With .Controls.Add(Type:=msoControlButton)
              .OnAction = "MyMacroName"
              .FaceId = 71
              .Caption = "Custom Menu 1"
              .TooltipText = "Custom Tooltip Text 1"
            End With
            With .Controls.Add(Type:=msoControlButton)
              .OnAction = "MyMacroName"
              .FaceId = 72
              .Caption = "Custom Menu 2"
              .TooltipText = "Custom Tooltip Text 2"
            End With
            With .Controls.Add(Type:=msoControlButton)
              .OnAction = "MyMacroName"
              .FaceId = 73
              .Caption = "Custom Menu 3"
              .TooltipText = "Custom Tooltip Text 3"
            End With
        End With
        Set m = Nothing
        
    End With
    Set cb = Nothing
End Sub

Sub DisplayCustomPopUp()
    On Error Resume Next
    Application.CommandBars(PopUpCommandBarName).ShowPopup
    On Error GoTo 0
End Sub

Sub DisplayExampleUserForm()
    Load UserForm1
    UserForm1.Show
    Unload UserForm1
End Sub

Sub MyMacroName()
Dim ctrl As CommandBarControl
    If Not UserForm1.Visible Then
        Set ctrl = Application.CommandBars.ActionControl
        ActiveCell.Formula = ctrl.Caption
        Set ctrl = Nothing
    Else ' the UserForm is visible
        If Application.International(xlCountrySetting) = 47 Then
            MsgBox "Dette kunne vært din egen makro som kjørte!", vbInformation, ThisWorkbook.Name
        Else
            MsgBox "This could be your macro running!", vbInformation, ThisWorkbook.Name
        End If
    End If
End Sub


Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    DisplayCustomPopUp
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    DeletePopUp
End Sub

Private Sub Workbook_Open()
    CreatePopUp
End Sub
Исходник не выкладываю чтобы не кто случайно не лишился своего popupmenu , если вдруг нужно будет выложу.
Shlyapnik вне форума Ответить с цитированием
Старый 10.03.2010, 10:44   #2
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Попробуйте выполнить такой макрос:
Код:
Sub Reset_CBar()
Application.CommandBars("Cell").Reset
End Sub
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 10.03.2010, 10:51   #3
Shlyapnik
Пользователь
 
Регистрация: 10.03.2010
Сообщений: 11
По умолчанию

Макрос выполнился успешно. Но результат тот же
Shlyapnik вне форума Ответить с цитированием
Старый 10.03.2010, 10:59   #4
Shlyapnik
Пользователь
 
Регистрация: 10.03.2010
Сообщений: 11
По умолчанию

The_Prist спасибо за наводку. Поэкспериментировал с твои примером, после добавления строки

Код:
Application.CommandBars("Cell").Reset
Application.CommandBars("Cell").Enabled = True
все заработало!
Shlyapnik вне форума Ответить с цитированием
Старый 10.03.2010, 11:30   #5
Shlyapnik
Пользователь
 
Регистрация: 10.03.2010
Сообщений: 11
По умолчанию

хм... оказывается это еще не все мои проблемы
popupmenu этой области тоже нет:



по аналогии я так понимаю проблема решится, только я не знаю как называется эта область, пробовал

Код:
Application.CommandBars("Sheet").Reset
Application.CommandBars("Sheet").Enabled = True
не помогло.

Может кто знает как называется эта область?
Shlyapnik вне форума Ответить с цитированием
Старый 10.03.2010, 11:52   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Это Вам поможет:

Код:
Sub ВосстановитьВсеКонтекстныеМеню()
    Dim cb As CommandBar
    For Each cb In Application.CommandBars
        If cb.Type = msoBarTypePopup Then cb.Enabled = True: cb.Reset
    Next
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 10.03.2010, 13:28   #7
Shlyapnik
Пользователь
 
Регистрация: 10.03.2010
Сообщений: 11
По умолчанию

EducatedFool спасибо. Все заработало
Shlyapnik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема Excel 2007 Screame Microsoft Office Excel 24 06.09.2010 06:45
MS Office Excel 2007 - проблема с установкой пароля gubby Microsoft Office Excel 2 22.01.2010 16:52
Удалиь пункты в контекстном меню Altera Свободное общение 0 06.08.2009 09:21
Для доступа к пунктам главного меню клавиши ALT + подчеркнутая буква меню в офис 2007? Окоча Юра Microsoft Office Word 1 24.02.2009 12:29
Программа в контекстном меню Xandr Общие вопросы Delphi 2 14.07.2007 19:48