D'après ce que je peux voir sur le web, c'est une plainte assez courante, mais les réponses semblent plus rares. Le problème est le suivant:
Nous avons un certain nombre d'applications Excel VBA qui fonctionnent parfaitement sur un certain nombre de machines d'utilisateurs. Cependant, sur une machine, ils s'arrêtent sur certaines lignes de code. Ce sont toujours les mêmes lignes, mais ces lignes semblent n'avoir rien de commun entre elles.
Si vous appuyez sur F5 (exécution) après l'arrêt, l'application continue, c'est presque comme si un point d'arrêt avait été ajouté. Nous avons essayé de sélectionner «supprimer toutes les pauses» dans le menu et même d'ajouter une pause et de la supprimer à nouveau.
Nous avons déjà eu ce problème avec des applications uniques et nous l'avons `` corrigé '' en supprimant le code des modules, en le compilant puis en le recollant, etc.
Le problème semble maintenant se rapporter à Excel lui-même plutôt qu'à un seul .xls, nous ne savons donc pas comment gérer cela.
Toute aide serait reçue avec gratitude :)
Merci,
Philip Whittington
Réponses:
J'ai trouvé une 2ème solution.
J'espère que cela aide quelqu'un.
la source
Ce problème vient d'une étrange bizarrerie dans Office / Windows.
Après avoir développé le même morceau de code VBA et l'avoir exécuté des centaines de fois (littéralement) au cours des deux derniers jours, j'ai rencontré ce problème tout à l'heure. La seule chose qui a été différente est que juste avant de rencontrer ce problème déroutant, j'ai accidentellement mis fin à l'exécution du code VBA avec une méthode peu orthodoxe.
J'ai nettoyé tous les fichiers temporaires, redémarré, etc ... Quand j'ai exécuté à nouveau le code après tout cela, j'ai toujours eu le problème - avant d'entrer dans la première boucle. Il est logique que "appuyez sur le bouton" Déboguer "dans la fenêtre contextuelle, puis appuyez deux fois sur [Ctrl + Pause] et après cela peut continuer sans s'arrêter" parce que quelque chose dans la combinaison Office / Windows n'a pas libéré l'exécution. Il est coincé.
L'action redondante Ctrl + Break résout probablement l'exécution persistante.
la source
Une solution est ici :
Mais, après avoir inséré cette ligne de code, je ne pouvais plus utiliser Ctrl + Break. Cela fonctionne donc mais pas beaucoup.
la source
xlInterrupt
. (Il se réactive également automatiquement lorsque l'exécution du code se termine.) Votre autre réponse a fonctionné pour moi, mais dans le pire des cas, cela pourrait être utilisé comme un correctif temporaire. Plus d'informations sur Application.EnableCancelKeyJ'ai trouvé que le fait d'appuyer sur ctrl + break alors que la macro ne fonctionnait pas a résolu le problème.
la source
J'essaierais les choses correctives habituelles: - Exécutez le nettoyeur de code VBA de Rob Bovey sur votre code VBA - supprimez tous les compléments sur le PC des utilisateurs, en particulier les compléments COM et .NET - Supprimez tous les fichiers .EXD des utilisateurs (incompatibilités MSoft Update) - Exécutez Excel Détecter et réparer sur le système des utilisateurs - vérifier la taille du fichier .xlb de l'utilisateur (devrait être 20-30K) - Redémarrez puis supprimez tous les fichiers temporaires de l'utilisateur
la source
Merci à tous pour leur contribution. Ce problème a été résolu en choisissant REPARER dans le Panneau de configuration. Je suppose que cela réenregistre explicitement certains des composants COM natifs d'Office et fait des choses que REINSTALL ne fait pas. Je m'attends à ce que ce dernier passe simplement par une liste de contrôle et accepte parfois ce qu'il y a s'il est déjà installé, peut-être. J'ai ensuite eu un problème distinct avec l'enregistrement de ma propre dll .NET pour l'interopérabilité COM sur la machine de l'utilisateur (bien que cela fonctionne également sur d'autres machines) bien que je pense que c'était mon erreur plutôt que Microsoft. Merci encore, je l'apprécie vraiment.
la source
J'ai rencontré ce problème à quelques reprises lors du développement d'une application Excel VBA complexe. Parfois, Excel a commencé à casser l'objet VBA de manière assez aléatoire. Et le seul remède était de redémarrer la machine. Après le redémarrage, Excel a généralement commencé à agir normalement.
Bientôt, j'ai découvert que la solution possible à ce problème consiste à appuyer une fois sur CTRL + Pause lorsque la macro n'est PAS en cours d'exécution. Peut-être que cela peut vous aider aussi.
la source
J'ai eu ce problème en utilisant également Excel 2007 avec un classeur foobar.xlsm (macro activé) qui obtiendrait le "L'exécution du code a été interrompue" en essayant simplement de fermer le classeur sur le X rouge dans le coin droit sans macros fonctionnant à toutes les macros de formulaire, de classeur ou de feuille de calcul "initialiser". Les options que j'ai eues étaient "Fin" ou "Continuer", le débogage était toujours grisé. J'ai fait comme une affiche précédente suggérée Panneau de configuration-> Programmes et fonctionnalités-> clic droit "Microsoft Office Proffesional 2007" (dans mon cas) -> changement-> réparation.
Cela a résolu le problème pour moi. Je pourrais ajouter que cela s'est produit peu de temps après une mise à jour MS et j'ai également trouvé un addin dans Excel appelé "Team Foundation" de Microsoft que je n'ai certainement pas installé volontairement
la source
Je voudrais ajouter plus de détails à la réponse n ° 2 de Stan pour les raisons ci-dessous:
J'ai moi-même été confronté à ce problème plus d'une douzaine de fois et en fonction des conditions du projet, j'ai choisi entre la réponse magique vaudou de Stan # 1 ou # 2. Quand j'ai continué à y faire face, je deviens plus curieux de savoir pourquoi cela se produit en premier lieu.
Je voudrais également ajouter une réponse pour les utilisateurs de Mac.
Il y a des limites à ces deux réponses possibles:
Cela peut se produire pour l'une des raisons ci-dessous:
Le système d'exploitation n'alloue pas de ressources système au processus Excel. ( Solution: il suffit de démarrer le système d'exploitation - le taux de réussite est très faible mais il est connu pour fonctionner plusieurs fois)
P-code est le code intermédiaire qui était utilisé dans Visual Basic (avant .NET) et est donc toujours utilisé dans le VBA. Il a permis un exécutable plus compact au détriment d'une exécution plus lente. Pourquoi je parle de p-code? Parce qu'il est parfois corrompu entre plusieurs exécutions et des fichiers volumineux ou simplement en raison de l'installation du logiciel (Excel) est corrompu quelque part. Quand le p-code corrompt. l'exécution du code est interrompue.Solution: Dans ces cas, il est supposé que votre code a commencé à se corrompre et il y a de fortes chances que votre classeur Excel soit également corrompu en vous donnant des messages tels que "fichier Excel corrompu et ne peut pas être ouvert". Par conséquent, comme solution rapide, vous pouvez compter sur la réponse n ° 1 ou la réponse n ° 2 selon vos besoins. Cependant, n'ignorez jamais les signes de corruption. Il est préférable de copier vos modules de code dans le bloc-notes, de supprimer les modules, d'enregistrer et de fermer le classeur, de fermer Excel. Maintenant, rouvrez le classeur et commencez à créer de nouveaux modules avec le code copié précédemment dans le bloc-notes.
Utilisateurs Mac, essayez l'une des options ci-dessous et d'entre elles fonctionnera certainement en fonction de l'architecture de votre système, c'est-à-dire de la version du système d'exploitation et d'Office
Vous serez mis en mode pause en utilisant les combinaisons de touches ci-dessus car la macro suspend l'exécution immédiatement en terminant la tâche en cours. Ceci remplace l'étape 2.
xlErrorHandler
avec l'Resume
instruction dans le gestionnaire d'erreur si le code d'erreur est 18. Ensuite, l'interruption est envoyée à la procédure en cours comme une erreur, interceptable par une erreur gestionnaire configuré avec une instruction On Error GoTo. Le code d'erreur récupérable est 18. La procédure en cours est interrompue et l'utilisateur peut déboguer ou terminer la procédure. Microsoft avertit que ne l'utilisez pas si votre gestionnaire d'erreurs a une instruction de reprise, sinon votre gestionnaire d'erreurs retourne toujours à la même instruction. C'est exactement ce que nous voulons dans les interruptions inutiles et inutiles de l'exécution du code.la source
Ma réputation actuelle ne permet pas encore de poster ceci en commentaire. La solution Stans pour entrer en mode débogage, appuyez deux fois sur Ctrl + Pause, jouez, enregistrez a résolu mon problème, mais j'ai deux rebondissements inattendus:
Ma structure de projet est protégée par mot de passe, donc pour entrer dans le mode de débogage, je devais d'abord entrer en mode développeur, cliquer sur la structure du projet et entrer le mot de passe.
Mon projet est un fichier modèle (.xmtl). J'ai ouvert le fichier via un double clic qui l'ouvre au format .xml avec un "1" à la fin du nom de fichier précédent. J'ai corrigé le bogue selon les instructions de Stans et l'ai enregistré sous le nom de fichier ... 1.xml Quand j'ai ensuite rouvert le modèle, cette fois en tant que modèle, et que je voulais appliquer le même correctif de bogue à ce fichier, le bogue avait disparu! Je n'ai pas changé ce fichier et toujours pas de bogue lors de l'exécution de la macro. Cela signifie pour moi que le bogue n'est pas réellement dans le fichier, mais dans un paramètre (caché) dans Excel.
la source
Réinstallez-le et corrigez-le :) Autre que c'est difficile à dire.
la source