2

Таким образом, у меня есть макрос, который не имеет ошибок. Если я перейду на Visual Basic и нажму F5 или F8, он запустится. Если я зайду в меню View Macros и выберу его, он запустится.

Однако, если я установил сочетание клавиш, поместил его на панель быстрого доступа или добавил на ленту, ни один из них ничего не сделал.

Это MS Project 2010 Professional. Информация о версии ,Системная информация.

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

3 ответа3

0

Экспортируйте свой модуль, откройте его в Блокноте или Блокноте ++. Выделите определение для вашей макропроцедуры; в первых строках тела вашего макроса должна быть одна или две команды Attribute :

Public Sub DoSomething()
Attribute DoSomething.VB_Description = "Does something"
Attribute DoSomething.VB_ProcData.VB_Invoke_Func = "A\n14"
    MsgBox "Hello"
End Sub

Здесь \n14 обозначает комбинацию клавиш Ctrl+Shift , поэтому этот макрос DoSomething назначается для Ctrl+Shift+A.

Если атрибут VB_ProcData отсутствует, добавьте его. Обратите внимание, что синтаксис для атрибутов-членов требует, чтобы имя члена квалифицировало атрибут (т. Е. Имя процедуры - DoSomething , поэтому инструкция атрибута переходит в DoSomething.VB_ProcData...).

Затем сохраните файл, вернитесь в проект VBA, удалите модуль и импортируйте измененный файл.

0

Это оказалось проблемой с настройкой моего профиля Windows с корпоративной сетью здесь. В рамках проекта есть 2 копии моего глобального шаблона, один из которых был «Глобальный.MPT "другой был" Global (+ не кэшированное предприятие). Перемещение моих макросов во второе решило эту проблему.

-1

Я обнаружил эту проблему при добавлении макроса к быстрой ссылке в MSP Pro 2016.

Макрос был записан, а не закодирован напрямую, и создание нового макроса (например, пример DoSomething() в ответе Матье) сработало.

Копирование кода макроса в Блокнот, удаление исходного макроса и создание новой версии путем вставки или ввода текста в тексте.

Sub Baselining()

    baselineSave All:=True, Copy:=0, Into:=0
    baselineSave All:=True, Copy:=0, Into:=14

End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .