Excel VBA “Out of Memory” techniques de débogage
J'ai été le débogage d'un problème mentionné dans quelques autres* questions sur DONC et a remarqué un comportement étrange pendant le processus de débogage.
Le comportement:
Subi de "out of memory' erreur lors du collage des formules complexes. Seulement environ la moitié des 20 000 lignes je suis d'itération d'obtenir des formules collé avant l'erreur.
Commenté pratiquement tout le code, l'erreur disparaît.
Décommentez code progressivement dans l'espoir de découvrir la section de code qui en est la cause.
En fin de décommenter la totalité du code et de cesser de faire l'expérience du bug!
Cela signifie exactement le même code a bien fonctionné dans la même instance d'Excel et de le corriger seulement nécessaire de l'exécution de diverses versions plus légères du code avant de revenir à la version originale. Ce qui pourrait éventuellement en être la cause?
+ 1 je suis d'accord avec brettdj. Code plus propre est vraiment bon. Je suis également curieux de connaître tout un exemple qui est de vous donner l'erreur...
Merci @brettdj mais le Code plus propre n'a pas aidé. Il a réussi à apporter la .fichier xla en bas à 151 k de 159k, ce qui est fascinant pour moi.
Pouvez-vous poster quelques extraits de code, plus précisément le collage de la formule complexe? Je voudrais également vous assurer que vous avez défini
Application.Calculation = xlCalculationManual
au début, puis de nouveau à xlCalculationAutomatic
à la fin, même si je suis sûr que vous avez déjà fait cela.OriginalL'auteur Trindaz | 2012-04-26
Vous devez vous connecter pour publier un commentaire.
En supposant que les données étaient en cours d'exécution sur était exactement identique à chaque fois, ça sonne plus comme votre problème a été à l'environnement - le problème pourrait être que le système d'exploitation a manqué de mémoire. Dans Excel 2007, la mémoire utilisable pour les formules de pivot et caches a été augmenté à 2 gigaoctets (GO), donc ce n'est probablement pas le problème. Toutefois, il est bien sûr également limitée par la quantité de mémoire de votre système d'exploitation qui était disponible à l'époque.
Le problème peut avoir lieu, car lors de la première testé, votre système d'exploitation disponible de la mémoire était plus bas (à partir d'autres processus en cours d'exécution... pourrait même avoir été poussé au-delà de la limite par les programmes d'arrière-plan tels que les Antivirus et les logiciels en cours d'exécution d'un scan) que lors de l'exécution de la totalité de la macro plus tard. Je voudrais essayer de l'exécuter votre macro avec le Gestionnaire de Tâches ouvert pour voir si vous obtenez n'importe où près de basse sur la mémoire physique. Aussi, (en supposant que vous êtes sur Excel 2007 ou plus tard) regardez la quantité de mémoire Excel et voir si vous obtenez n'importe où près de la limite de 2 go. Je doute que ce soit le problème, mais c'est au moins la peine de vérifier. Aussi, comme Zairja dit, assurez-vous que vous allez sur le calcul manuel au début.
Vous avez dit que vous étiez à l'aide de formules complexes... consultez cet article sur L'amélioration de la Performance dans Excel
Il y a beaucoup d'informations utiles dans l'article qui va probablement vous aider à rationaliser votre macro.
Est-ce utile pour vous?
OriginalL'auteur Ben Strombeck