2008-10-27 6 views
3

Si je débogue (dans ce cas un assembly Visual Studio appelé par Excel) et que le code met à jour la feuille de calcul Excel, comment puis-je obtenir Excel pour redessiner la feuille/fenêtre en cours pendant une pause dans le débogueur?Comment actualiser Excel pendant le débogage

Répondre

2

Si vous appelez le processus croisé Excel (par exemple, via Automation), Excel doit afficher automatiquement les modifications au fur et à mesure que les appels sont effectués, sauf si vous définissez xlApp.ScreenUpdating = False. Si tel est le cas, il est préférable d'utiliser une condition pour ne pas définir xlApp.ScreenUpdating = False si vous utilisez le mode Déboguer lorsque vous avez configuré des points d'arrêt. Sinon, vous devrez définir xlApp.ScreenUpdating = True à partir d'un autre processus (en utilisant GetObject(), ou quelque chose de similaire, de sorte que vous pouvez saisir la même instance d'application Excel). Toutefois, si votre code est appelé en cours de traitement (par exemple, si votre code s'exécute en tant que complément), votre code est déclenché via une combinaison de raccourcis clavier, un bouton CommandBar, un rappel de contrôle de ruban ou le semblable. Dans ce cas, Excel est monothread et votre code arrête toutes les exécutions Excel. La seule chose que je pourrais penser, dans ce cas, serait d'utiliser "éditer et continuer", en ajoutant la ligne xlApp.ScreenUpdating = True puis en entrant dans la ligne suivante. (N'oubliez pas de supprimer cette ligne par la suite, cependant!)

Si vous n'utilisez pas xlApp.ScreenUpdating = False, alors je ne sais pas vraiment quel est votre problème, et vous devrez fournir plus de détails sur votre code ...

+1

ne pouvait pas l'avoir mieux dit – Jon

+0

Comme vous le faites remarquer correctement, comme Excel est un seul thread, être arrêté dans le débogueur empêche tout repeindre l'écran. J'utilise xlApp.ScreenUpdating = false, mais l'ajout de xlApp.ScreenUpdating = True & Step (même dans ce cas) ne résout pas le problème, et sans repeindre/rafraîchir je ne trouve pas de soln. – GalleySlave

Questions connexes