2016-05-10 57 views
5

questo sta accadendo a utenti con Excel 2007/2010 che utilizzano eventi Worksheet_Change e Worksheet_SelectionChange che ho disegnato nel 2013.Application.EnableEvents default è False

cosa sembra accadere è che la prima volta che aprono la cartella di lavoro, gli eventi del foglio di lavoro non si attivano. Mi sono assicurato che le loro opzioni fossero predefinite per abilitare i macro. Se apro la finestra immediata ed eseguo Application.EnableEvents = True, i loro eventi iniziano a sparare bene. Gli utenti con Excel 2013 non sembrano avere questo problema, anche quando si apre la stessa copia esatta della cartella di lavoro da un'unità di rete condivisa.

Mi sembra di essere stato in grado di risolvere questo problema inserendo Application.EnableEvents = True nell'evento Workbook_Open, ma mi chiedo come soluzione valida a lungo termine. Preferirei davvero capire perché questo sta accadendo in primo luogo per affrontarlo direttamente.

+1

Questa è solo una pugnalata al buio, in uno dei tuoi eventi si sta utilizzando 'On Error Resume Next' o' Goto Something'. E il codice non è retrocompatibile con 2007/2010. Quindi, quando si verifica l'errore, viene ignorato e viene saltato 'Application.EnableEvents = True' in quel codice. Rimuovi tutti i gestori di errori nel codice e apri il libro nelle versioni precedenti per vedere quale errore si verifica. –

+1

Poiché l'evento Workbook_Open è attivo, sembra che gli eventi siano abilitati all'inizio. Forse alcune incompatibilità stanno causando il ripristino di False quando determinati eventi causano problemi –

risposta

1

Ho avuto un problema simile oggi su alcuni VBA di Word. E si trovava in un progetto nascosto. Si è scoperto che i gestori di eventi On Error sono stati codificati erroneamente da qualcun altro. Ho usato i macro AutoExec e AutoOpen e inserito uno Stop per entrare nella modalità di debug e vedere cosa succede.

Questi eventi devono essere attivati ​​a meno che non sia stato impostato su EnableEvents su False nel codice per iniziare.