Le macro vengono eseguite individualmente, ma non collettivamente (Microsoft Excel)
Guillermo ha una serie di macro che esegue regolarmente e quando esegue ciascuna di esse manualmente, funzionano bene. Ha provato a inserire tutte le macro in una macro “RunAll” (quindi deve eseguire solo una macro invece di sei singole macro) e ora una di esse non funziona correttamente. Quando esegue la macro RunAll, riceve un errore che indica che una cella è protetta e di sola lettura. Tuttavia, non c’è protezione sul foglio e se esegue le macro individualmente, non ottiene l’errore.
Va da sé che la macro che viene eseguita bene individualmente ma non in combinazione con le altre sta riscontrando qualcosa che ne causa il malfunzionamento. Probabilmente ciò significa che una macro in esecuzione prima di lasciare la cartella di lavoro in uno stato diverso da quello in cui si troverebbe se si eseguissero le macro singolarmente.
Ad esempio, se la macro con comportamento anomalo è la terza della serie da eseguire, controlla le prime due macro per vedere cosa stanno facendo. Cambiano le celle selezionate? Cambiano il foglio di lavoro attivo? Cambiano le condizioni che si aspetta la terza macro? Uno qualsiasi di questi potrebbe causare il malfunzionamento della terza macro.
È il secondo suggerimento, relativo al foglio di lavoro attivo, lo scenario più probabile. Quando si esegue la macro individualmente, è probabile che venga eseguita con un particolare foglio di lavoro attivo. Le altre macro, tuttavia, possono modificare il foglio di lavoro attivo in uno diverso e quel foglio di lavoro diverso potrebbe essere quello a cui è stata applicata la protezione.
La soluzione è controllare ogni macro per assicurarsi che salvi le informazioni sulla posizione (foglio di lavoro, cella attiva, celle selezionate, ecc.)
prima di apportare modifiche a uno di questi. Una volta salvati, è facile ripristinarli alla fine della macro.
Se il problema persiste, potrebbe essere necessario eseguire il debug. Nella macro “RunAll”, utilizza l’editor VBA per stabilire un punto di interruzione sulla riga che chiama la macro in errore. Puoi quindi usare “Step Into”
comando per entrare nella macro ed esaminare dove si verifica l’errore. Presta particolare attenzione a quale foglio di lavoro e celle la macro sta cercando di modificare, quindi vedi se riesci a capire cosa sta succedendo con le macro precedenti per portare a quel foglio di lavoro e celle. Puoi usare una delle seguenti righe nella finestra Immediata per vedere dove ti trovi:
? ActiveSheet.Name ? ActiveCell.Address
Mentre rintracciare questi tipi di errori può essere una sfida, la luce alla fine del tunnel è che ti ritroverai con una macro “RunAll” perfettamente funzionante che può farti risparmiare molto tempo.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (12710) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 e Excel in Office 365.