Страницы: 1
RSS
Не работает контекстное меню (правая кнопка мыши) в Excel 2016
 
Всем добрый день, возникла проблема, очень надеюсь на вашу помощь.
На одном ПК возникла проблема - перестало появляться контекстное меню при нажатии правой кнопкой мыши в любом месте документа (на ячейку, на столбец, на строку), проблема актуальная для любого файла Excel.
Поиск по данному форуму дал результат, в одной из старых тем нашел слудующее:

Чтобы заработало контекстное меню для ячеек:
Код
Sub macro1() 
With CommandBars("Cell") 
.Reset 
.Enabled = True 
End With 
End Sub


Для строк:
Код
Sub macro1() 
With CommandBars("Column") 
.Reset 
.Enabled = True 
End With 
End Sub


Для столбцов:
Код
Sub macro1() 
With CommandBars("Row") 
.Reset 
.Enabled = True 
End With 
End Sub


Как работает данный макрос к сожалению не понимаю, но после запуска сразу же во всех документах начинает работать контекстное меню, но временно  :( через какое-то время проблема вновь появляется и снова приходится запускать этот макрос. Из того что пробовал - полная переустановка офиса с очисткой реестра и тд, не помогло через день проблема вернулась.

Понятно что можно переустановить Windows, но хочется разобраться в проблеме.

Всем заранее спасибо за советы.
 
подключена надстройка или открываете какой-то из своих файлов, в котором при открытии срабатывает макрос запрещающий использование перечисленных выше меню.
как только заментили, что меню пропали: в порядке обратном открытию файлов, пройдитесь по всем проектам, по всем модулям, где-то этот макрос живет...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Вероятно, в каком-то из файлов excel, с которым вы работаете стоит макрос, который меняет интерфейс excel, в частности убирает контекстное меню. Периодически он глючит и не возвращает все настройки на место.

Я бы предложил объединить эти макросы, запихать в личную книгу макросов и вывести кнопку на ленту, чтобы можно его было запускать в один клик.
Изменено: Wiss - 11.04.2018 11:21:21
Я не волшебник, я только учусь.
 
Цитата
Wiss написал:
Периодически он глючит
Это не глюк, это недоработка кода. Принцип один, уходя гасите свет. Пришел на лист, книгу.....  где это надо включи, ушел - отключи.  Кто-то просто это не учел.
По вопросам из тем форума, личку не читаю.
 
БМВ, не спорю, что это недоработка, но учитывая, что автор не понимает как работают макросы из темы, вряд ли он сможет эту недоработку исправить. Поэтому я и предложил удобный костыль. Плюс, это всё таки может быть глюком, связанным с некорректным выходом из книги.
Я не волшебник, я только учусь.
 
Попробуйте найти  и переименовать файл:
C:\Users\ВашеИмя\AppData\Roaming\Microsoft\Excel\Excel15.xlb
где ВашеИмя - имя, под которым Вы входите в Windows.

После этого зайдите в Excel. Все меню должны восстановиться до первоначального состояния.
Изменено: sokol92 - 11.04.2018 14:23:18
Владимир
 
Цитата
sokol92 написал:
C:\Users\ВашеИмя\AppData\Roaming\Microsoft\Excel\Excel15.xlb
%USERPROFILE%\AppData\Roaming\Microsoft\Excel\

так корректнее
По вопросам из тем форума, личку не читаю.
 
Конечно, но мой вариант понятнее (проверено) :)  
Владимир
 
Wiss, БМВ,
ну то что возможно отрабатывает какой-либо скрипт в файлайх это возможно, так как файлов excel  у пользователя много и поступают из разных сотронних компаний, но ставить горячую клавишу чтобы каждый раз нажимать её если возникает проблема это думаю не лучшее решение в силу того что пользователь мягко говоря не очень терпеливый ))) но в любом случае спасибо за совет и потраченное время, приму к сведению рекомендации
sokol92,
Спасибо большое за совет, попробую, если это поможет то может сделаю чтобы каждую ночь автоматически этот файл удалялся из каталога

Еще теоретически можно отключить работу макросов вообще, но думаю это не вариант так как в некоторых файлах макросы нужны.
Изменено: staudio - 11.04.2018 13:55:57
 
Успехов! Сообщите о результате.
Владимир
 
Добрый день.

Задался вопросом,  на открытии книги   код  скрывает все данные на ribbon-e. При закрытии книги отображает с включением всех параметров. Но все равно , когда открываешь другую книгу , правый клик мыши не работает . Не помогает также вызов в  Workbook_BeforeClose  кода, приведенного выше, есть идеи,куда рыть?


Код
Private Sub Workbook_Open()

    ChangeInterface False
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
ChangeInterface True
ActiveWindow.Close False

End Sub


Private Sub ChangeInterface(Value As Boolean)
    With Application
        .ScreenUpdating = False
        .Caption = IIf(Value = True, Empty, "Application")
        .DisplayStatusBar = Value: .DisplayFormulaBar = Value
        Dim iCommandBar As CommandBar
        For Each iCommandBar In .CommandBars
            iCommandBar.Enabled = Value
        Next
        With .ActiveWindow
            .Caption = IIf(Value = True, .Parent.Name, "88888")
            .DisplayHeadings = Value: .DisplayGridlines = Value
            .DisplayHorizontalScrollBar = Value: .DisplayVerticalScrollBar = Value
            .DisplayWorkbookTabs = Value
        End With
        .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"", " & Value & ")"
        .ScreenUpdating = True
    End With
End Sub
 
Цитата
restation написал:
куда рыть
в сторону других событий книги. Ведь beforeClose, как следует из названия, срабатывает только перед закрытием книги с кодом, а не перед открытием другой. Но есть события Activate и Deactivate, которые можно использовать, чтобы скрывать или показывать панель в зависимости от того, какая книга активна.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков,  Приветствую, нашел ошибку , на userform  был CommandButton , который закрывал прложение , пришлось и туда воткнуть этот reset,воспользовался вашим. А касаемо  Activate и   Deactivate  это я предусмотрел....

Код
Sub скинуть_правый_клик()
    Dim cmdBar As Object
    On Error Resume Next
    For Each cmdBar In Application.CommandBars
        cmdBar.Enabled = True: cmdBar.Reset
    Next cmdBar
End Sub
 
Вопрос актуальный, правый клик все же не работает. Ниже пример кода c деталями открытия и закрытия , активации и де активации книги.

Открываем
Скрытый текст
События закрытия.
Скрытый текст
Активация ( продублировал все переходы )
Скрытый текст
Деактивация ( продублировал все переходы )
Скрытый текст
 
лучше бы книгу с кодами приложили. Так проблему искать сложно. Например, непонятно реально ли задублированы процедуры ChangeInterface или Вы нам их два раза специально написали? Если Вы - зачем? В общем вопросов больше, чем ответов. У меня по крайней мере.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков,Пожалуйста, пример кинул, в оригинале userform заполнен боксами + название файла другое..
 
Цитата
restation написал:
правый клик мыши не работает
При открытии книги отключается обработка событий и корректируются меню.
При закрытии книги никакие события не обрабатываются (обработка событий отключена) и меню остаются "испорченными".

Выложенная Вами книга может сильно разволновать (после открытия) неподготовленного читателя. :)  
Владимир
 
Цитата
sokol92 написал:
При закрытии книги никакие события не обрабатываются (обработка событий отключена) и меню остаются "испорченными".
А вот из этого , да ?
Код
Call Reset_Events


Sub Reset_Events()
    Application.EnableEvents = False
End Sub


Нужно вот так?
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
   Application.DisplayAlerts = False  
   Call Восстановить_Интерфейс
   Workbooks("****").Close
   Application.DisplayAlerts = True 
End Sub


Private Sub Восстановить_Интерфейс()
       ChangeInterface True
   Call востановить правый_клик
    End Sub   

Sub востановить правый_клик()
Dim cmdBar As Object
    On Error Resume Next
    For Each cmdBar In Application.CommandBars
        cmdBar.Enabled = True: cmdBar.Reset
    Next cmdBar
End Sub

Private Sub ChangeInterface(Value As Boolean)
    With Application
        .ScreenUpdating = False
        .Caption = IIf(Value = True, Empty, "Application")
        .DisplayStatusBar = Value: .DisplayFormulaBar = Value
        Dim iCommandBar As CommandBar
        For Each iCommandBar In .CommandBars
            iCommandBar.Enabled = Value
        Next
        With .ActiveWindow
            .Caption = IIf(Value = True, .Parent.Name, "Print_Tobacco")
            .DisplayHeadings = Value: .DisplayGridlines = Value
            .DisplayHorizontalScrollBar = Value: .DisplayVerticalScrollBar = Value
            .DisplayWorkbookTabs = Value
        End With
        .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"", " & Value & ")"
        .ScreenUpdating = True
    End With
End Sub
 
sokol92, рибон же востанавливается полностью, все корректно, проблема с правым кликом. Если запускать :

Код
Sub востановить_правый_клик()
Dim cmdBar As Object
    On Error Resume Next
    For Each cmdBar In Application.CommandBars
        cmdBar.Enabled = True: cmdBar.Reset
    Next cmdBar
End Sub
Никаких проблем после , разлипает. Добавил это событие на   Workbook_BeforeClose  , не работает. Может это связанно как-то с формой?

Клавиша есть на форме, которая закрывает все приложение в целом , по типу :
Код
Private Sub CommandButton2_Click()

    Call востановить_правый_клик
    ActiveWindow.Close False
End Sub

Изменено: restation - 04.10.2019 22:06:41
 
Цитата
restation написал:
Добавил это событие на   Workbook_BeforeClose
Так как раз в этом и проблема.
При открытии книги обработка событий объектов Excel Вами отключается (свойство Application.EnableEvents устанавливается в False). Соответственно, при закрытии книги не будет вызван макрос, обрабатывающий событие Workbook.BeforeClose. Вы в этом можете убедиться, поставив, например, выдачу какого-либо сообщения в начале макроса Workbook_BeforeClose.
Владимир
 
sokol92,  Благодарю.... это был мой случай

Цитата
БМВ написал:
Пришел на лист, книгу.....  где это надо включи, ушел - отключи
 
решить проблему помогло переименование файла в системной папке
 
Привет!
Помогите разобраться почему не работает контекстное меню вызываемое правой кнопкой мыши? Если переименовать файл Excel15.xlb, то всё начинает работать, но стоит открыть файл с макросом сразу перестает работать. Я в макросах совсем не разбираюсь, прошу поправить или подсказать что сделать.
Код
Sub ChangeInterface(Value As Boolean)
    With Application
        .ScreenUpdating = False
        .Caption = IIf(Value = True, Empty, "1")
        .DisplayStatusBar = Value: .DisplayFormulaBar = Value
        Dim iCommandBar As CommandBar
        For Each iCommandBar In .CommandBars
            iCommandBar.Enabled = Value
        Next
        With .ActiveWindow
            .Caption = IIf(Value = True, .Parent.Name, "")
            .DisplayHeadings = Value: .DisplayGridlines = Value
            .DisplayHorizontalScrollBar = Value: .DisplayVerticalScrollBar = Value
            .DisplayWorkbookTabs = Value
        End With
        .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"", " & Value & ")"
        .ScreenUpdating = True
    End With
End Sub

Sub УбратьВсё()
    ChangeInterface False
End Sub

Sub ВосстановитьИнтерфейс()
    ChangeInterface True
End Sub

Private Sub Workbook_Open() ' открытие книги
    УбратьВсё
End Sub
Private Sub Workbook_Activate() ' возврат на эту книгу из другой
    УбратьВсё
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean) ' закрытие книги
    ВосстановитьИнтерфейс
End Sub
Private Sub Workbook_Deactivate() ' переключение на другую книгу
    ВосстановитьИнтерфейс
End Sub
 
Цитата
sokol92 написал:  Попробуйте найти  и переименовать файл...
Спасибо. У меня была похожая ошибка, помог Ваш совет.
Страницы: 1
Наверх