Obtenir Excel pour rafraîchir les données sur la feuille à partir de VBA
Comment obtenir des données de tableur dans Excel pour se recalculer à partir de VBA, sans le kluge de changer juste une valeur de cellule?
5 réponses
Les lignes suivantes vont faire l'affaire:
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
Edit: The .La méthode Calculate () ne fonctionnera pas pour toutes les fonctions, Je l'AI testée sur une feuille avec des fonctions add-in array. La feuille de production que j'utilise est assez complexe et je ne veux pas essayer de la tester .CalculateFull () méthode, de sorte qu'il peut fonctionner.
Ceci devrait faire l'affaire...
'recalculate all open workbooks
Application.Calculate
'recalculate a specific worksheet
Worksheets(1).Calculate
' recalculate a specific range
Worksheets(1).Columns(1).Calculate
parfois Excel va hoqueter et a besoin d'un coup de pouce-start pour réappliquer une équation. Cela se produit dans certains cas lorsque vous utilisez des formules personnalisées.
assurez-vous que vous avez le script suivant
ActiveSheet.EnableCalculation = True
reformuler l'équation du choix.
Cells(RowA,ColB).Formula = Cells(RowA,ColB).Formula
cela peut ensuite être bouclé en fonction des besoins.
Vous pouvez également essayer d'
Application.CalculateFull
ou
Application.CalculateFullRebuild
si cela ne vous dérange pas de reconstruire tous les classeurs ouverts, plutôt que seulement la feuille de travail active. (CalculateFullRebuild
reconstruit dépendances.)
j'ai eu un problème avec la désactivation d'une image de fond (un PROJET de filigrane) en VBA. Mon changement ne s'est pas manifesté (ce qui a été fait avec le Sheets(1).PageSetup.CenterHeader = ""
méthode) - donc j'avais besoin d'un moyen de rafraîchir. ActiveSheet.EnableCalculation
l'approche a partiellement fait l'affaire, mais n'a pas couvert les cellules inutilisées.
À la fin, j'ai trouvé ce dont j'avais besoin avec une doublure qui fait de l'image disparaissent quand il n'était plus ensemble :-
Application.ScreenUpdating = True