2010-09-17 8 views
2

J'ai une question/problème sur l'exécution d'une macro avec un certain niveau de concurrence dans Excel 2007.multi-thread dans Excel 2007

Voici ma situation.
(1) J'utilise Excel 2007
(2) Mon PC est un Intel Dual-Core.
(3) Pour ce test, la macro est très simple et définie dans un module.

Declare Sub sommeil Lib "kernel32" (ByVal dwMilliseconds As Long)

Fonction de() sommeil 1000 simple_macro = "Bonjour tout le monde" End Function

(4) Je remplis « = simple_macro() "dans 100 x 100 cellules dans une feuille de calcul.

(5) Le temps nécessaire pour terminer le traitement de la macro est le même que j'active ou non les fonctions multi-thread en option. Il ressemble à la

ordonnanceur Excel évalue les cellules de façon linéaire ... Il est compréhensible que ma macro faisait un certain traitement cpu-intensive, mais comme vous pouvez le voir est assez simple et chaque cellule est indépendante des autres, ainsi devrait finir dans quelques secondes.

Avez-vous des suggestions pour évaluer les cellules simultanément? Excel 2007 prend-il en charge le multithreading? (Par exemple, utiliser pleinement plusieurs cœurs de processeur lors de l'évaluation)

Répondre

3

Bien que le moteur de calcul Excel 2007 prenne en charge le multithreading, Excel VBA ne le fait pas.

Les fonctions définies par l'utilisateur écrites en VBA sont donc traitées comme n'étant pas thread-safe par Excel.