Erreur de Procédure trop grande dans les Macros VBA (Excel)
Je suis Procedure too Large Error
dans une macro VBA.
Je suis à l'aide de MS-Excel 2003.
Veuillez ne jamais rédiger des procédures qui ont plus de 65534 lignes de code.
Je crois que c'est pas le nombre de lignes qui compte. On peut obtenir cette erreur en 4k lignes. C'est la taille de la procédure. La procédure, lors de la compilation ne peut pas dépasser 64kilobytes. Niraj, briser la procédure en petites parties et si vous avez enregistré une macro puis supprimez pas pertinent de code.
Grâce Siddharth
Plus de 64 ko. Je suis impressionné. Et perplexe.
Tout comme une note de côté, si vous êtes venus ici à partir de google, il est probable que vous voyez ce parce que vous avez quitté l'enregistreur de macro en cours d'exécution pour un long moment
Je crois que c'est pas le nombre de lignes qui compte. On peut obtenir cette erreur en 4k lignes. C'est la taille de la procédure. La procédure, lors de la compilation ne peut pas dépasser 64kilobytes. Niraj, briser la procédure en petites parties et si vous avez enregistré une macro puis supprimez pas pertinent de code.
Grâce Siddharth
Plus de 64 ko. Je suis impressionné. Et perplexe.
Tout comme une note de côté, si vous êtes venus ici à partir de google, il est probable que vous voyez ce parce que vous avez quitté l'enregistreur de macro en cours d'exécution pour un long moment
OriginalL'auteur Code Hungry | 2012-07-12
Vous devez vous connecter pour publier un commentaire.
Vous obtiendrez cette erreur si votre procédure est plus de 64 ko. Ce sont certaines des choses que vous pouvez compacter votre code
1) se débarrasser de code répétitif. Voir cet exemple
Ce code peut être écrit comme
Un autre exemple
Ce code peut être écrit comme
Cela permettra d'assurer que vous couper vers le bas sur l'espace et ne pas écrire de code répétitif.
2) Si vous le code généré par la macro, alors vous pouvez obtenir quelque chose comme cela. Se débarrasser de l'inutile code comme
ActiveWindow.ScrollRow = 8968
Ci-dessus peut être écrite comme
3) Déclarer des Objets de sorte que vous n'avez pas à continuer à répéter. Voir cet exemple
Cela peut être écrite comme
4) Briser votre procédure en cas de besoin. et d'appeler la 2ème procédure, à partir du 1er
5) Éviter d'utiliser
.Select
et.Activate
Ils n'ont pas seulement de rendre votre code lente, mais aussi prendre beaucoup d'espace dans votre code si largement utilisé. Comment éviter à l'aide de Select dans Excel macros VBA+1 d'Où obtenez-vous le temps d'écrire de telles réponses longues?
lol@PradeepKumar
J'ai eu une méthode avec beaucoup, beaucoup de
Round(ThisWorkbook.Worksheets("Sheet5").Range("NamedRange").Value, 5)
. J'ai remplacé le tout avec un seulinteger
variable, de sorte queRound(...)
a été appelé qu'une seule fois. Cela a également fait la méthode la plus facile à entretenir. Il court sans doute plus vite maintenant.OriginalL'auteur Siddharth Rout
Macros taille est limitée à 64 ko, après quoi vous obtiendrez un message d'erreur à partir d'Excel.
J'ai rencontré un problème, pour lequel il n'y a pas d'explication ou de message d'erreur à partir d'Excel, où Excel a pas été à même de calculer un classeur par le manque de ressources, lorsque j'ai écrit une macro qui appelle de multiples autres macros.
Je suis en supposant que la somme de la longueur de toutes les macros dans la chaîne devra être envisagée.
OriginalL'auteur Mike Benstead