Arrêter L'exécution de la Macro Excel en appuyant sur Esc ne fonctionnera pas

je lance excel 2007 sur XP.

y a-t-il un moyen d'empêcher une macro de fonctionner pendant son exécution autre que presser escape? Habituellement, si je pense que j'ai créé une boucle infinate ou quelque chose d'autre a foiré, je frappe escape et il lance une erreur, mais la macro s'arrête.

cette fois (et je l'ai déjà fait mais pas si mal), j'ai mis en place une msgbox pour un débogage rapide. Il s'avère qu'il a dû boucler environ 6000 fois, ce qui signifie que j'ai dû " OK " 6000 boîtes de messages, ce qui a pris plusieurs minutes. Je n'ai pas économisé avant de lancer (une autre erreur) donc je ne pouvais pas ouvrir le Gestionnaire des tâches à exit.

faut-il un autre moyen d'arrêter l'exécution d'une macro dans le cas où je gaffe comme ça à nouveau?

30
demandé sur ashleedawg 2011-07-21 17:35:58

10 réponses

Utiliser CRTL+ BREAK pour suspendre l'exécution à tout moment. Vous serez mis en mode pause et appuyez sur F5 pour continuer l'exécution ou de l' F8 pour exécuter le code étape par étape dans le débogueur visuel.

bien sûr, cela ne fonctionne que lorsqu'il n'y a pas de boîte de message ouverte, donc si votre code VBA ouvre constamment des boîtes de message pour une raison quelconque, il deviendra un peu difficile d'appuyer sur les touches au bon moment.

vous peut même modifier la plupart du code en cours d'exécution.

Utiliser Debug.Print pour imprimer les messages à Fenêtre Immédiate dans l'éditeur VBA, c'est bien plus pratique que MsgBox.

Utiliser points d'arrêt ou Stop mot-clé pour arrêter automatiquement l'exécution dans les zones intéressantes.

Vous pouvez utiliser Debug.Assertarrêter l'exécution conditionnelle.

45
répondu Tomalak 2017-01-24 13:03:06

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

12
répondu VBANoob 2015-12-25 03:43:59

parfois, le bon jeu de touches ( Pause, Break ou arrêt défil) ne sont pas disponibles sur le clavier (la plupart du temps se produit avec les utilisateurs d'ordinateur portable) et en appuyant sur Esc 2, 3 ou plusieurs fois n'arrête pas la macro aussi.

j'ai été bloqué trop et finalement trouvé la solution dans la fonctionnalité d'accessibilité de Windows après quoi j'ai essayé toutes les options étudiées et 3 d'entre eux ont travaillé pour moi dans 3 différents scénario.

Etape #01: si votre clavier n'a pas de touche spécifique, s'il vous plaît ne vous inquiétez pas et ouvrez le "clavier à L'écran" à partir des utilitaires Windows en appuyant sur Win+ U.

Étape n ° 02: maintenant, essayez l'une des options ci-dessous et elles fonctionneront certainement en fonction de votre architecture système, C'est-à-dire OS et version bureau

  • Ctrl Pause
  • Ctrl+ arrêt défil
  • Esc+ Esc (Appuyez deux fois de suite)

vous serez mis en mode break en utilisant les combinaisons de touches ci-dessus car la macro suspend l'exécution immédiatement en terminant la tâche en cours. Pour eg. s'Il tire les données du web, alors il s'arrêtera immédiatement avant d'exécuter n'importe quelle commande suivante, mais après avoir tiré les données, après quoi on peut appuyez sur la touche F5 ou F8 pour continuer le débogage.

4
répondu jainashish 2017-09-22 06:27:55

Vous pouvez arrêter une macro en appuyant sur ctrl+ break mais si vous n'avez pas la touche de rupture vous pouvez utiliser ce autohotkey (open source) code:

+ ces:: SendInput {CtrlBreak} retour

appuyer sur maj+ Escape sera comme appuyer sur ctrl+ break et ainsi stoppera votre macro.

Toute la gloire à cette page

3
répondu Lisa 2016-01-24 09:34:15

j'aime également utiliser MsgBox pour le débogage, et j'ai rencontré ce même problème plus d'une fois. Maintenant j'ajoute toujours un bouton D'annulation à la fenêtre popup, et je sors de la macro si Cancel est pressé. Exemple de code:

    If MsgBox("Debug message", vbOKCancel, "Debugging") = vbCancel Then Exit Sub
2
répondu Robert 2017-09-10 04:56:48

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" - requête système comme ceci - doit être pressé ensemble et cela arrête toute macro en cours d'exécution

1
répondu AMR 2013-04-15 19:22:05

j'ai trouvé que parfois quand j'ouvre une deuxième fenêtre Excel et exécute une macro sur cette deuxième fenêtre, l'exécution de la première S'arrête. Je ne sais pas pourquoi ça ne marche pas tout le temps, mais vous pouvez essayer.

1
répondu Manuel 2013-11-09 19:26:26

j'ai oublié de commenter une ligne avec une MsgBox avant d'exécuter ma macro. Ce qui veut dire que je devrais cliquer sur OK plus de Cent mille fois. La touche ESC échappait simplement à la boîte de message mais n'arrêtait pas l'exécution de la macro. Le fait de maintenir la touche ESC en permanence pendant quelques secondes m'a aidé à arrêter l'exécution du code.

0
répondu Yemi Adeoye 2017-04-18 08:46:55

ma petite suggestion rétrospective est d'insérer un Stop après chaque Msgbox que vous utilisez dans le debug. Si vous écrivez pour une Msgbox qui renvoie une réponse (par exemple, VbOk, VbCancel), ajoutez également une instruction Stop à chacune. Sortez les déclarations d'arrêt quand tout est parfait.

0
répondu SteveK 2017-09-12 04:58:34

ce n'est pas une solution élégante en aucun cas, et je ne la recommanderais pas à moins que vous ne soyez désespéré.

si vous itérez des données, vous pouvez vérifier l'existence d'un fichier dans un dossier quelque part dans votre boucle I. e votre code continue de fonctionner tant qu'un fichier spécifique n'est pas trouvé dans le dossier. Vous pouvez le faire en ajoutant les lignes suivantes:

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

à la fin de votre boucle. Cela va sortir du sub si vous ajoutez un fichier textfile appelé stop à votre ExampleFolder.

0
répondu bm13563 2018-08-31 14:30:59