Сброс макроса OnKey-Назначение по умолчанию не работает для записанных макросов - PullRequest
0 голосов
/ 06 ноября 2019

В Excel 2016 несколько дней назад по ошибке я назначил макрос для Ctrl + y в окне Macro-Recorder.

Теперь я бы хотел вернуть Ctrl + y к его поведению по умолчанию.

Для этого я нашел следующий код:

Sub keys_deleteHotKeys()
   ' https://www.excelcampus.com/vba/keyboard-shortcut-run-macro/
    Application.OnKey "^y", ""
    Call Application.OnKey("^y")
End Sub

К сожалению, вышеприведенный Sub не имеет никакого эффекта.

Отличается ли Excel другой способ обработки макроса для назначения клавишкогда сделано в окне Macro Recorder по сравнению с назначением VBA Application.OnKey?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

В регистраторе макросов всегда есть скрытый атрибут члена для назначенной горячей клавиши, и в IDE нет ничего, что могло бы изменить или иным образом манипулировать им. Вы можете экспортировать файл кода, отредактировать его (удалить скрытую строку Attribute) и повторно импортировать его в свой проект VBA ... но это довольно неприятно.

Получить Rubberduck (бесплатный проект надстройки VBIDE с открытым исходным кодом, которым я управляю), и тогда вы можете сделать это:

'@ExcelHotkey("y")
Public Sub MyAwesomeMacro()
    'do stuff...
End Sub

Эта аннотация / комментарий затем может быть превращена в тот же скрытый элементАтрибут Excel используется при записи макросов и назначении горячей клавиши (с помощью статического анализа кода; подробности см. в этом посте ).

Строчная буква "y" - это то, что делает горячую клавишу Ctrl +у. Если вы хотите, чтобы горячая клавиша была Ctrl + Shift + y, просто сделайте ее заглавной "Y":

'@ExcelHotkey("Y")
Public Sub MyAwesomeMacro()
    'do stuff...
End Sub

Преимущества этого подхода многочисленны:

  • Нет неясногоатрибуты скрытого члена для манипуляции.
  • Нет необходимости экспортировать / редактировать / импортировать что-либо.
  • Скрытые атрибуты скрытого члена обнаруживаются / документируются.
  • Нет необходимости в Application.OnKeyhack.
  • Вы получаете результат проверки всякий раз, когда атрибуты и аннотации расходятся, и вы можете синхронизировать значения одним щелчком мыши.

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


Примечание: функция будет работатьидеально подходит для нужд OP ( удаление скрытого атрибута), но ошибка регрессии была подана , так как добавление скрытого атрибута нарушено в v2.4.1.5170.

0 голосов
/ 06 ноября 2019

В меню списка макросов, доступном на вкладке «Лента разработчика», выберите соответствующий макрос, затем Option... и удалите установленный вами ярлык.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...