2013-03-14 2 views
11

У меня есть макрос, который я называю с помощью групповой кнопки/закладок/добавленной в редактор пользовательского UI -VBA ошибка «Неверное число аргументов или нетрудоспособного задания свойств» при запуске макроса с помощью пользовательской кнопки

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> 
    <ribbon startFromScratch="false"> 
     <tabs> 
      <tab id="tabCustomActions" label="Custom ActionsXXX" insertAfterMso="TabDeveloper"> 
       <group id="GroupTLA" label="TLA Actions"> 
        <button id="buttonFormatTLA" label="Format as TLA" image="TLALogo" size="large" onAction="start_tla" /> 
       </group> 
      </tab> 
     </tabs> 
    </ribbon> 
</customUI> 

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

VBA Error

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

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

Вот мой полный код в Pastebin, если вы хотите его просмотреть. Благодарю.

+0

VBA IDE не открывается, потому что вы не используете VBA, это макрос, верно? Какой код работает в VBA, когда вы запускаете его вручную? – Brad

+2

Брэд: в Excel и других офисных продуктах, VBA = макро. То же самое. –

ответ

12

У вас есть неправильная сигнатура вызова для обратного вызова start_tla в коде VBA.

Если открыть файл в пользовательского интерфейса редактора, есть кнопка под названием Сформировать Callbacks справа в меню. Если нажать ее, это даст вам правильные обратные вызовы для VBA код, чтобы соответствовать XML ленты в файле:

'Callback for buttonFormatTLA onAction 
Sub start_tla(control As IRibbonControl) 
    'Your code goes here 
End Sub 

Согласно ссылке Pastebin, ваш суб выглядит так, без параметра control As IRibbonControl:

Public Sub start_tla() 
+0

Отлично, спасибо за это. Я фактически создал общую функцию обратного вызова on_customUI_action', а затем проверил, какая кнопка была нажата. Таким образом, макрос работает, если я запускаю его вручную. Благодарю. –

+1

В моем случае у меня было такое же имя модуля в другом открытии. Эта ошибка прошла после того, как я дал уникальное имя модулю. – Dhay