Pourquoi un petit Excel VBA Macro est en cours d'exécution très lente
Je suis en train d'écrire un court macro pour masquer tous les clients qui n'ont pas de vente en vigueur pour l'année en cours. Le CUMUL annuel des ventes sont dans la colonne K (spécifiquement K10-250). Ces cellules utilisent un recherchev d'extraire des données à partir d'un autre onglet où nous le vidage des données. Ma question est pourquoi sur terre serait cette macro prendre de 10 à 15 minutes pour s'exécuter? J'ai une macro similaire sur une autre feuille de calcul qui ne prend que 2-3 minutes de plus de 1 500 lignes. J'ai déjà éteint l'écran mise à jour. Je ne peux pas penser à quelque chose d'autre qui permettrait d'accélérer.
Sub HideNoSlackers()
'
' HideNoSlackers Macro
'
'
Application.ScreenUpdating = False
'
Sheets("CONSOLIDATED DATA").Select
Dim cell As Range
For Each cell In Range("K10:K250")
If cell.Value = 0 Then
cell.EntireRow.Hidden = True
Else
cell.EntireRow.Hidden = False
End If
Next
End Sub
Je ne vois rien de mal avec votre macro, essayez de désactiver l'add-ins et en cours d'exécution. Est-ce à l'accélérer?
Si vous disposez d'un code qui déclenche des événements de feuille de calcul, l'éteindre avec
Cela peut ne pas aider, mais essayez de définir le mode de calcul manuel pendant que vous faites cela de sorte que vos modifications ne pas forcer un recalcul de la feuille entière.
Je ne pense pas que le recalcul se produit lorsque cachent/affichage des cellules.
si vous mettez un auto-filtre et le filtre de cette façon - est-ce que cela prend autant de temps? Si oui vous avez un problème avec vos données et des formules; Si vous avez un Problème avec votre macro.
Si vous disposez d'un code qui déclenche des événements de feuille de calcul, l'éteindre avec
application.EnableEvents = False
et retour à True
lorsque vous avez terminé.Cela peut ne pas aider, mais essayez de définir le mode de calcul manuel pendant que vous faites cela de sorte que vos modifications ne pas forcer un recalcul de la feuille entière.
Je ne pense pas que le recalcul se produit lorsque cachent/affichage des cellules.
si vous mettez un auto-filtre et le filtre de cette façon - est-ce que cela prend autant de temps? Si oui vous avez un problème avec vos données et des formules; Si vous avez un Problème avec votre macro.
OriginalL'auteur B-Rell | 2013-09-19
Vous devez vous connecter pour publier un commentaire.
Vous voudrez peut-être le calcul Manuel avant de cacher les lignes? Aussi, vous pouvez vous débarrasser de
If
déclarations dans votre cas. Essayez ceci:OriginalL'auteur PatricK
OriginalL'auteur Tim Williams
Pourquoi vous faites ça avec une macro?
Si vous créez un tableau sur les données, vous pouvez configurer un filtre sur la colonne ventes qui affiche uniquement celles où les ventes<> 0.
Macros dans excel, mais la majorité des actions que les gens se tournent vers des macros pour peut être fait en natif dans excel.
OriginalL'auteur Dale M
il doit y avoir quelque chose de mal. Essayez sans .La sélection de la feuille, mais ce n'est pas une énorme amélioration de la
Remarque les lignes sont visibles par défaut, l'instruction Else devrait être facultatif vraiment.
S'il ajoute un
Sheets("CONSOLIDATED DATA").Cells.EntireRow.Hidden = False
après laApplication.ScreenUpdating = False
puis toutes les lignes deviennent visiblesOriginalL'auteur
les plus brefs code pour atteindre le même Objectif d'une manière très différente:
bien sûr, vous pourriez mettre dans les standards minimums comme
et de manière inverse à la fin.
Max
OriginalL'auteur Max
Essayez de désactiver les sauts de page. J'ai eu un problème similaire qui allait se passer après quelqu'un imprimé à partir de la feuille. Ce fut sur les sauts de page, et à la prochaine exécution du script prendrait une éternité.
OriginalL'auteur user1842924
Nous avons constaté que le programme de Syncplicity dans la Version 4.1.0.1533 ralentit macros jusqu'à 15times plus lent en raison des événements de déclenchement syncplicity.
avec
Application.EnableEvents = False
;faire votre travail ici
Application.EnableEvents = True
la vitesse est de retour.
OriginalL'auteur user7398891