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?

42
demandé sur braX 2008-09-30 22:54:25

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.

52
répondu Lance Roberts 2008-09-30 19:58:22

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
15
répondu Graham 2017-07-10 10:29:59

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.

7
répondu kambeeks 2013-09-04 19:11:12

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.)

5
répondu Dave DuPlantis 2008-09-30 19:52:04

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

2
répondu AjV Jsy 2014-12-02 17:28:11