2013-03-14 36 views
11

Ho una macro che io chiamo tramite un gruppo/tasto tab/aggiunta dal UI Editor Custom -errore VBA 'il numero errato di argomenti o assegnazione di proprietà non valido' durante l'esecuzione di macro tramite pulsante personalizzato

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

Il pulsante si presenta bene, con il mio logo personalizzato, ma quando mai mi fai clic sul pulsante ottengo l'errore di follow -

VBA Error

VBA non viene aperto dopo questo errore, come di solito è, e nessun codice all'interno VBA è indicato come problema se apro lo sviluppo console loper e quindi provare e fare clic sul pulsante.

Stranamente però, se provo a eseguire la macro manualmente, funziona senza errori. Qualcuno ha qualche idea su come risolvere questo?

Ecco il mio codice completo in un Pastebin, se si desidera visualizzarlo. Grazie.

+0

L'IDE VBA non si apre perché non si sta eseguendo VBA, questa è una macro, giusto? Quale codice è in esecuzione in VBA quando lo si esegue manualmente? – Brad

+2

Brad: in Excel e negli altri prodotti Office, VBA = macro. Stessa cosa. –

risposta

12

Si dispone della firma della chiamata errata per la richiamata start_tla nel codice VBA.

Se si apre il file in personalizzato UI Editor, c'è un pulsante chiamato Generare callback verso destra nel menu. Se lo si preme, che vi darà i callback corretti per il codice VBA per abbinare il xml nastro nel file:

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

Secondo il link Pastebin, il sottomarino si presenta così, senza il parametro control As IRibbonControl:

Public Sub start_tla() 
+0

Perfetto, grazie per quello. Ho effettivamente creato una funzione di callback generica 'on_customUI_action' e poi ho controllato quale pulsante era stato premuto. In questo modo la macro funziona anche se la eseguo manualmente. Grazie. –

+1

Nel mio caso, ho avuto lo stesso nome di modulo in un altro componente aggiuntivo che era aperto. Questo errore è andato dopo che ho dato un nome univoco al modulo. – Dhay

Problemi correlati