2013-03-14 13 views
11

Mam makro, które ja nazywam poprzez przycisk/zakładka/grupa dodana przez Custom UI Editor -błąd VBA „Błędna liczba argumentów lub nieprawidłowe przypisania własności” podczas uruchamiania makra za pomocą przycisku niestandardowego

<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> 

The przycisk pojawia się tylko dobrze, z moim własne logo, ale jeśli kiedykolwiek kliknięciu przycisku pojawia się błąd follow -

VBA Error

VBA nie jest otwierany po tym błędzie, jak to zwykle bywa, a nie kod wewnątrz VBA jest wskazany jako problem, jeśli otworzę zadanie loper konsoli, a następnie spróbuj i kliknij przycisk.

Co dziwne, jeśli spróbuję uruchomić makro ręcznie, działa poprawnie bez błędów. Czy ktoś ma jakieś pomysły, jak to rozwiązać?

Oto mój pełny kod w Pastebin, jeśli chcesz go zobaczyć. Dzięki.

+0

VBA IDE nie otwiera się, ponieważ nie używasz VBA, to jest makro, prawda? Jaki kod jest uruchomiony w VBA, gdy uruchomisz go ręcznie? – Brad

+2

Brad: w programie Excel i innych produktach biurowych, VBA = makro. Ta sama rzecz. –

Odpowiedz

12

Masz nieprawidłowy podpis wywołania zwrotnego start_tla w kodzie VBA.

Jeśli otworzyć plik w Własne UI Editor, znajduje się przycisk o nazwie Generowanie Callbacki w prawo w menu. Jeśli naciśniesz go, to daje poprawne wywołania zwrotne dla kodu VBA, aby dopasować XML wstążki w pliku:

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

na podstawie łącza Pastebin, sub wygląda tak, bez parametru control As IRibbonControl:

Public Sub start_tla() 
+0

Doskonale, dzięki za to. Właściwie stworzyłem ogólną funkcję zwrotną 'on_customUI_action', a następnie sprawdziłem, który przycisk został naciśnięty. W ten sposób makro działa, jeśli uruchomię go również ręcznie. Dzięki. –

+1

W moim przypadku miałem tę samą nazwę modułu w innym "Add-In", który był otwarty. Ten błąd minął po tym, jak nadałem modułowi unikalną nazwę. – Dhay

Powiązane problemy