Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/скрытие системных контекстных меню - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » скрытие системных контекстных меню (Макросы/Sub)
скрытие системных контекстных меню
krosav4ig Дата: Понедельник, 14.04.2014, 22:51 | Сообщение № 1
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
здравствуйте. Пишу проект на VBA. Делаю свое контекстное меню для листа. Меню создается при первом его вызове макросом и удаляется после закрытия книги. Вызывается оно таким кодом
[vba]
Код
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     Application.CommandBars("cell").Enabled = False
     Application.CommandBars("List Range Popup").Enabled = False
     Application.CommandBars("row").Enabled = False
     Application.CommandBars("column").Enabled = False
     On Error GoTo 2
1:  Application.CommandBars("меню1").ShowPopup
     Application.OnTime Now + TimeValue("00:00:01"), ThisWorkbook.Name & "!module1.restore"
     Exit Sub
2: menu = 1
     Application.Run "'" & ThisWorkbook.Name & "'!module1.create_menu(menu)"
     GoTo 1
End Sub
[/vba]

вот код модуля restore:
[vba]
Код

Sub restore()
     Application.CommandBars("cell").Enabled = True
     Application.CommandBars("list range popup").Enabled = True
     Application.CommandBars("row").Enabled = True
     Application.CommandBars("column").Enabled = True
End Sub
[/vba]

при нажатии правой кнопкой мыши на листе при обычном режиме просмотра и в режиме разметки станицы все работает нормально - мое меню появляется, системные не появляются, но в страничном режиме после скрытия моего меню на доли секунды выскакивает системное меню. В чем моя ошибка и как это исправить?


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениездравствуйте. Пишу проект на VBA. Делаю свое контекстное меню для листа. Меню создается при первом его вызове макросом и удаляется после закрытия книги. Вызывается оно таким кодом
[vba]
Код
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     Application.CommandBars("cell").Enabled = False
     Application.CommandBars("List Range Popup").Enabled = False
     Application.CommandBars("row").Enabled = False
     Application.CommandBars("column").Enabled = False
     On Error GoTo 2
1:  Application.CommandBars("меню1").ShowPopup
     Application.OnTime Now + TimeValue("00:00:01"), ThisWorkbook.Name & "!module1.restore"
     Exit Sub
2: menu = 1
     Application.Run "'" & ThisWorkbook.Name & "'!module1.create_menu(menu)"
     GoTo 1
End Sub
[/vba]

вот код модуля restore:
[vba]
Код

Sub restore()
     Application.CommandBars("cell").Enabled = True
     Application.CommandBars("list range popup").Enabled = True
     Application.CommandBars("row").Enabled = True
     Application.CommandBars("column").Enabled = True
End Sub
[/vba]

при нажатии правой кнопкой мыши на листе при обычном режиме просмотра и в режиме разметки станицы все работает нормально - мое меню появляется, системные не появляются, но в страничном режиме после скрытия моего меню на доли секунды выскакивает системное меню. В чем моя ошибка и как это исправить?

Автор - krosav4ig
Дата добавления - 14.04.2014 в 22:51
krosav4ig Дата: Вторник, 15.04.2014, 18:53 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Все. Разобрался. Оказывается в excel есть 2 меню с одинаковым именем Cell - c индексами 29 и 32
заменил [vba]
Код
Application.CommandBars("cell").Enabled = False
[/vba] на [vba]
Код
Application.CommandBars(29).Enabled = False
Application.CommandBars(32).Enabled = False
[/vba]
и [vba]
Код
Application.CommandBars("cell").Enabled = True
[/vba]
на [vba]
Код
Application.CommandBars(29).Enabled = True
Application.CommandBars(32).Enabled = True
[/vba] и все работает как надо


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Вторник, 15.04.2014, 18:53
 
Ответить
СообщениеВсе. Разобрался. Оказывается в excel есть 2 меню с одинаковым именем Cell - c индексами 29 и 32
заменил [vba]
Код
Application.CommandBars("cell").Enabled = False
[/vba] на [vba]
Код
Application.CommandBars(29).Enabled = False
Application.CommandBars(32).Enabled = False
[/vba]
и [vba]
Код
Application.CommandBars("cell").Enabled = True
[/vba]
на [vba]
Код
Application.CommandBars(29).Enabled = True
Application.CommandBars(32).Enabled = True
[/vba] и все работает как надо

Автор - krosav4ig
Дата добавления - 15.04.2014 в 18:53
Мир MS Excel » Вопросы и решения » Вопросы по VBA » скрытие системных контекстных меню (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!