J'ai quelques questions sur la façon dont les variables globales peuvent être utilisées dans Excel VBA. Par conséquent, mon application utilise un objet API fourni par un tiers. Par conséquent, mon application utilise un objet API fourni par un tiers. Actuellement toutes les fonctions, nous initialisons cet objet et l'utiliser:excel vba variable globale et concurrence
function()
Dim api as someApi
api.dosth
end function
Je me demande, au lieu de l'initialiser à chaque fois, puis-je faire une variable globale? comme juste le déclarer au début et l'initialiser dans la fonction workbook_open? Si plusieurs fonctions s'exécutent en même temps et tentent d'utiliser cet objet API partagé, cela posera-t-il un problème? Aussi juste une question générale sur les variables globales: tous les modules partagent-ils les variables? Ou chaque module ne peut voir que les variables globales déclarées dans son propre code? Par exemple, si j'ai le module a et le module b dans le même classeur et que l'objet api est déclaré dans le module a et initialisé dans l'événement workbook_open, les fonctions du module b peuvent-elles l'utiliser ou non?
Merci beaucoup !!
Voir ici pour voir comment fonctionne la portée variable dans VBA http://support.microsoft.com/kb/141693. Fondamentalement, oui, vous pouvez déclarer une variable publique pour contenir votre objet. Selon que cet objet a un "état" et ce que font vos routines, il devrait fonctionner correctement. Notez qu'il n'y a pas vraiment de "concurrence" dans VBA - seulement une fonction/sub est en cours d'exécution à la fois. –
Si vous vous sentez fonctionnel, une alternative serait de passer l'objet en tant que paramètre à toute fonction/sous qui doit l'utiliser. –