Combien la définition de ces propriétés de la vitesse de votre macro Excel: de l'Application.ScreenUpdating, Application.DisplayAlerts
qu'est-ce que le point de faire ceux-ci:
Application.ScreenUpdating = False
Application.DisplayAlerts = False
est-il vraiment sauver beaucoup de temps?
- DisplayAlerts est pas liée à la vitesse à laquelle le programme s'exécute, il suffit de supprimer Excel par défaut de mise en garde (par exemple, la demande de confirmation de la feuille de calcul suppressions), que vous pouvez ou ne souhaitez pas supprimer. (Je suppose que techniquement, c'est de courir plus vite puisqu'il n'y aura pas de dialogues, mais vous savez ce que je veux dire).
Vous devez vous connecter pour publier un commentaire.
D'accord.
J'ai trouvé que lorsque vous éteignez
ScreenUpdating
,Calculation
, il est préférable de penser à la façon de faire autant de travail (écrit,se lit,événements,...) que possible pour aussi peuScreenUpdating
appels en retour. Cela permettra d'accélérer les opérations, tout en également fournissant à l'utilisateur une meilleure et plus tolérable de l'expérience. Dire, par exemple que vous souhaitez écrire des données à une feuille aussi vite que possible. Vous pouvez faire ceci:ou pour aller plus vite vous pouvez le faire:
De même, lors de l'écriture des données, il est plus rapide à écrire de plus gros morceaux, de moins en moins de temps. de sorte que le nombre idéal de l'écrit, le cas échéant, en est un. Vous pouvez le faire par le traitement d'une
Range
en 2Darray[rows,cols]
. J'ai trouvé ce qui suit pour être efficace:Ici, il n'y a pas de boucles, cela permet d'optimiser chaque tâche individuelle du temps dans la CPU, qui accélère les délais de traitement et à son tour, semble faire excel fonctionnent normalement (pas de plantage).
HTH,
F
Cela dépend de combien vous êtes en fait la mise à jour sur l'écran, comme une partie de votre code, (c'est à dire le nombre de cellules de mise à jour), et le nombre de feuilles sont là, le nombre de feuilles/cellules se référer à la fiche de votre code est mise à jour et comment beaucoup de formules sont présentes dans le classeur entier.
Chaque fois que vous modifiez quelque chose dans la feuille Excel recalcule toutes les formules. Donc, si votre code n'est pas de mise à jour trop grand nombre de feuilles/cellules, mais votre classeur a beaucoup de formules, puis de désactiver l'écran de mise à jour peut ne pas vous aider à tous.
Plus qu'une chose à considérer pour le Calcul de la prestation est de la propriété, de définir ce à xlCalculationManual à turnn hors de l'auto recals et remettez-le à xlCalculationAutomatic à la fin.
Une chose de plus à considé des Événements, si une ou plusieurs de ces feuilles ont Worksheet_Chnage ou Worksheet_Calculate gestionnaires d'événements chaque modification de votre code est fait de déclencher et de votre code besoin d'attendre jusqu'à ce qu'ils reviennent. Donc l'éteindre pendant votre code.
En plus de mon code, j'ai l'habitude d'utiliser ce
L'amélioration de screenUpdating dépend en grande partie de votre macro est écrite.
Il sera particulièrement utile à ceux horrible macros faite par l'enregistreur, plein d'inutiles "select" et "activer".
Absolument. J'ai eu un long-exécution d'une macro il y a plusieurs années qui a pris presque une minute pour s'exécuter. J'ai mis ScreenUpdating pour faux et il fini en moins de 5 secondes.
Assurez-vous de réinitialiser ScreenUpdating à vrai lorsque vous avez fini de l'exécution de la macro.
Je ne voudrais pas utiliser ceux de "speed" mais par "fonction"
Lorsque vous ne voulez pas que l'utilisateur de voir l'écran de mise à jour:
Lorsque vous ne souhaitez pas que l'utilisateur puisse voir tous les superflus message à partir de l'app:
Surtout le dernier parce que personne ne veut être battue à mort avec des messages vous demandant si vous "vraiment" voulez mettre à jour, ajouter ou supprimer des enregistrements. Je préfère protéger l'utilisateur de ce genre de chose.