Comment obtenir des données de feuille de calcul dans Excel pour se recalculer à partir de VBA, sans la simple modification d'une valeur de cellule?Comment obtenez-vous Excel pour actualiser les données sur la feuille à partir de VBA?
Répondre
Les lignes suivantes feront l'affaire:
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
Edit: La méthode .Calculate() ne fonctionnera pas pour toutes les fonctions, je l'ai testé sur une feuille avec des fonctions de tableau add-in. La feuille de production que j'utilise est assez complexe. Je ne veux pas essayer la méthode .CalculateFull(), donc ça peut marcher.
Cela 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
voir le commentaire sur ma réponse –
Vous pouvez également essayer
Application.CalculateFull
ou
Application.CalculateFullRebuild
si vous ne me dérange pas la reconstruction de tous les classeurs ouverts, plutôt que juste la feuille de calcul active. (CalculateFullRebuild
reconstruit également les dépendances.)
Parfois Excel va hocher et a besoin d'un redémarrage pour réappliquer une équation. Cela arrive dans certains cas lorsque vous utilisez des formules personnalisées.
Assurez-vous que vous avez le script suivant
ActiveSheet.EnableCalculation = True
Réappliquez l'équation de choix.
Cells(RowA,ColB).Formula = Cells(RowA,ColB).Formula
Ceci peut ensuite être bouclé selon les besoins.
J'ai eu un problème avec la désactivation d'une image d'arrière-plan (un filigrane DRAFT) dans VBA. Ma modification ne s'affichait pas (ce qui a été effectué avec la méthode Sheets(1).PageSetup.CenterHeader = ""
) - j'avais donc besoin d'un moyen de rafraîchir. L'approche ActiveSheet.EnableCalculation
a partiellement fait l'affaire, mais n'a pas couvert les cellules inutilisées.
En fin de compte, j'ai trouvé ce que je avais besoin avec une doublure qui a fait la Vanish d'image quand elle ne fut plus défini: -
Application.ScreenUpdating = True
- 1. Accéder à la base de données SQL dans Excel VBA
- 2. Ouverture de la connexion ADO à la feuille de calcul Excel dans VBA
- 3. Excel feuille de calcul
- 4. Ecrire des données dans SQL à partir d'une feuille Excel
- 5. Comment extraire des données en utilisant regex à partir de la feuille Excel en Perl
- 6. Comment intégrer une feuille Excel à l'intérieur de la feuille de propriétés d'un composant Flex?
- 7. Accéder à VBA Comment ajouter de nouvelles feuilles à Excel?
- 8. Comment extraire le design de la table en feuille Excel?
- 9. Comment actualiser Excel pendant le débogage
- 10. Comment créer xml plist pour Xcode à partir de la feuille de calcul Excel
- 11. Excel VBA Macro
- 12. Masquage d'une feuille de calcul Excel avec VBA
- 13. Comment protéger l'image sur une feuille Excel
- 14. VBA - Connexion d'une feuille de calcul Excel 2007 à la base de données Access 2007 via ADODB
- 15. Comment obtenir uniquement la table requise à partir de la feuille Excel
- 16. Programmation VBA dans Excel
- 17. Quelle est la meilleure façon d'obtenir la dernière feuille de calcul non vide dans Excel (VBA)
- 18. manipulation de feuille Excel
- 19. Modifier une feuille Excel à partir de Matlab
- 20. calculs Excel et VBA
- 21. Ajout de point de données au graphique Excel avec VBA
- 22. Macro Excel VBA pour suivre les modifications dans une feuille séparée
- 23. Cliquez avec le bouton droit de la souris sur les onglets de feuille désactivés dans Excel
- 24. liaison de données pour feuille Excel est pas au format
- 25. Génération dynamique de formulaires dans Excel à l'aide de VBA
- 26. MS Access 03 - Normaliser des données à partir d'une feuille de calcul Excel
- 27. obtenir les valeurs de toutes les cases à cocher dans Excel à l'aide VBA
- 28. Travailler avec des données à partir d'une feuille de calcul Excel en C#
- 29. doutes de la feuille Excel dans VBScripting
- 30. Excel VBA - Réinitialiser une plage
En fait, il y a .Calculate() et .CalculateFull() méthodes pour cela, à différents niveaux. – GSerg
J'ai testé Calculate sur une feuille, et toutes les fonctions d'une cellule ne sont pas recalculées. Vous pouvez aussi le faire en changeant le bit 'dirty', mais j'ai trouvé que c'était la solution la plus simple. –
L'utilisation de la propriété 'EnableCalculation' est une bonne idée car elle permet de recalculer une seule feuille au niveau de la feuille de travail. En revanche, 'Application.CalculateFull' force un calcul complet de toutes les données, non seulement dans une seule feuille de travail ou classeur, mais dans ** tous les classeurs ouverts **! Cela pourrait être une surenchère majeure, d'autant plus que l'utilisateur pourrait avoir plusieurs classeurs non reliés, potentiellement compliqués, ouverts. – ricovox