web-dev-qa-db-fra.com

Arrêter l'exécution de la macro Excel lorsque vous appuyez sur Echap ne fonctionnera pas

J'utilise Excel 2007 sur XP.

Existe-t-il un moyen d'empêcher l'exécution d'une macro pendant son exécution autrement qu'en appuyant sur échap? Habituellement, si je pense avoir créé une boucle infinie ou endommagé quelque chose, je frappe d'échappement et une erreur est renvoyée, mais la macro s'arrête.

Cette fois-ci (et je l’ai déjà fait auparavant, mais pas si mal), j’ai configuré une boîte de messages pour un débogage rapide. Il s’est avéré qu’il devait faire une boucle environ 6000 fois, ce qui voulait dire que je devais "OK" 6000 messages, ce qui prenait plusieurs minutes. Je n'avais pas économisé avant de courir (autre erreur), je ne pouvais donc pas ouvrir le gestionnaire de tâches pour quitter.

Existe-t-il un autre moyen d'arrêter l'exécution d'une macro au cas où je recommencerais comme ça?

31
ptpaterson

UsoCRTL+BREAKsospendere l'esecuzione in qualsiasi momento. Sarai messo in modalità pausa e potrai premereF5per continuare l'esecuzione oF8per eseguire il codice passo-passo nel débogueur visuel.

Si vous êtes intéressé à jouer seul lorsque vous êtes connecté à un poste de courrier électronique, cliquez ici pour en savoir plus sur le comportement de l'utilisateur à la fin de chaque événement pour lequel vous avez choisi un code de conduite simple et rapide.

Vous pouvez modifier le contenu du code du dictionnaire dans d'autres langues.

États-Unis Debug.Print by stampare i messaggi su Finestra immediata nell'editor VBA, est encore plus commode avec MsgBoxname__.

Etats-Unis points d'arrêt o la parola chiave Stopfor interrompere automaticamente l'esecuzione in aree interessanti.

È possibile utilizzare Debug.Assert per interrompere l'esecuzione condizionale .

51
Tomalak

CTRL + SCR LK (Scroll Lock) a fonctionné pour moi.

15
VBANoob

Parfois, le bon jeu de clés (PauseBreak ou ScrLk) ne sont pas disponibles sur le clavier (cela arrive surtout avec les utilisateurs d’ordinateurs portables) et en appuyant sur Esc 2, 3 ou plusieurs fois n'arrête pas la macro aussi.

Je me suis aussi retrouvé coincé et j'ai finalement trouvé la solution dans la fonctionnalité d'accessibilité de Windows, après quoi j'ai essayé toutes les options recherchées et 3 d'entre elles ont fonctionné pour moi dans 3 scénarios différents.

Étape # 01: Si votre clavier n'a pas de touche spécifique, ne vous inquiétez pas et ouvrez le 'Clavier à l'écran' à partir de Windows Utilities en appuyant sur Win + U.

Étape # 02: Maintenant, essayez l’une des options ci-dessous et elles fonctionneront certainement en fonction de l’architecture de votre système, c’est-à-dire de la version OS et Office.

  • Ctrl + Pause
  • Ctrl + ScrLk
  • Esc + Esc (Appuyez deux fois de suite)

Vous serez mis en mode pause en utilisant les combinaisons de touches ci-dessus, car la macro suspend l'exécution immédiatement après la tâche en cours. Pour par exemple. s'il extrait les données du Web, il s'arrête immédiatement avant d'exécuter une commande suivante, mais après l'extraction des données, après quoi on peut appuyer sur F5 ou F8 pour continuer le débogage.

6
jainashish

Vous pouvez arrêter une macro en appuyant sur ctrl + break mais si vous n'avez pas la clé d'interruption , vous pouvez utiliser le code autohotkey (open source):

+ ESC :: SendInput {CtrlBreak} return

Pressage shift + Escape sera comme appuyer ctrl + break et ainsi arrêtera votre macro.

Toute la gloire à cette page

4
Lisa

J'aime aussi utiliser MsgBox pour le débogage, et j'ai rencontré le même problème plusieurs fois. Maintenant, j'ajoute toujours un bouton Annuler à la fenêtre contextuelle et quitte la macro si vous appuyez sur Annuler. Exemple de code:

    If MsgBox("Debug message", vbOKCancel, "Debugging") = vbCancel Then Exit Sub
2
Robert

J'ai constaté que parfois, lorsque j'ouvre une seconde fenêtre Excel et exécute une macro sur cette seconde fenêtre, l'exécution de la première s'arrête. Je ne sais pas pourquoi cela ne fonctionne pas tout le temps, mais vous pouvez essayer.

1
Manuel

Vous pouvez également essayer d'appuyer sur la touche "FN" ou la touche de fonction avec le bouton "Break" ou avec le bouton "sys rq" - la demande système en tant que telle - doit être appuyée simultanément, ce qui empêche toute macro en cours

1
AMR

J'ai oublié de commenter une ligne avec un MsgBox avant d'exécuter ma macro. Cela signifie que je devrais cliquer sur OK plus de cent mille fois. La touche ÉCHAP échappait simplement à la boîte de message mais n'arrêtait pas l'exécution de la macro. En maintenant la touche ESC enfoncée pendant quelques secondes, j'ai pu arrêter l'exécution du code.

0
Yemi Adeoye

Ce n'est en aucun cas une solution élégante, et je ne le recommanderais pas sauf si vous êtes désespéré.

Si vous parcourez des données, vous pouvez vérifier l'existence d'un fichier dans un dossier quelque part dans votre boucle, c'est-à-dire que votre code continue de s'exécuter tant qu'un fichier spécifique n'est pas trouvé dans le dossier. Vous pouvez le faire en ajoutant les lignes:

DirFile = FilePath & "ExampleFolder\stop.txt"
If Len(Dir(DirFile)) = 0 Then
Else
    MsgBox ("Code stopped by stopfile")
    Exit Sub
End If

au bout de votre boucle. Cela va quitter le sous-objet si vous ajoutez un fichier texte appelé stop à votre ExampleFolder.

0
bm13563

ESC et CTRL-BREAK ne fonctionnaient pas pour moi tout à l'heure. Mais CTRL-ESC a fonctionné !? Je ne sais pas pourquoi, mais je pensais le jeter au cas où cela aiderait quelqu'un d'autre. (J'avais oublié i = i + 1 dans ma boucle ...)

0
dave