Excel 2016 - QAT и макросы - PullRequest
0 голосов
/ 23 мая 2018

Я создал несколько макросов и сохранил проект VBA в виде файла .xlam (Excel Add In).Макросы (Public Subs) видны, когда я захожу в Excel> Файл> Параметры> Панель быстрого доступа (QAT)> Выбрать «Макросы» в раскрывающемся меню слева.Затем я могу добавить макросы в QAT, чтобы пользователи могли щелкнуть значок инструментов для запуска этих макросов.

Я наблюдал ОЧЕНЬ странное поведение.Вот что было раньше, все было нормально.

Quick Access Toolbar Customization VBA Editor

Вот что было после.Вещи начинают становиться странными.

QAT After Editor After

Единственное отличие состоит в том, что я изменил тип аргумента Sub со встроенноготип переменной для пользовательского типа класса.Но я еще не запускал макрос.Я просто ввожу код.Но Excel изменил отображение на двух других макросах, которые я НЕ редактирую (имена макросов - Check () и CheckAndFix ()).

Итак, вопросы:

1) Почему отображается графический интерфейс Excelразные форматы при вводе кода?И это, кажется, зависит от типа переменной, которую я печатаю?Я не знал, что IntelliSense имел такое влияние на пользовательский интерфейс Excel.

2) Почему Excel изменил отображение двух других Sub, которые я не трогал?

КстатиЭто поведение воспроизводимо даже после перезагрузки компьютера.то есть я могу изменить тип аргумента между String и cSettings и заметил, что формат списка макросов изменился соответствующим образом.

Спасибо!

1 Ответ

0 голосов
/ 23 мая 2018

Я наконец понял это!

Всякий раз, когда код ссылается на неопределенный тип данных, настройка QAT не будет работать.Симптомы:

1) Вы увидите, что имя рабочей книги было добавлено к имени макроса в списке.В обычной ситуации вы просто увидите имя макроса.

2) Если вы связываете макрос с кнопкой QAT.Эта кнопка не будет работать.Всякий раз, когда вы нажимаете кнопку, он говорит: " Невозможно запустить макрос" XXX ". Макрос может быть недоступен в этой книге или все макросы могут быть отключены ".Это вводит в заблуждение, так как макрос существует и все макросы разрешены.

Вы можете спросить - «Почему ваш код ссылается на какой-то неопределенный тип данных?»Это произошло потому, что мой код ссылается на некоторые дополнительные типы данных (например, Словарь), для которых требуется дополнительная библиотека (например, «Среда выполнения сценариев Microsoft). Если ссылка на библиотеку не была настроена вручную, тип данных станет неопределенным».

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

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