Module VBA qui exécute d'autres modules
Je suis de la programmation dans Microsoft VBA. Au début, j'ai besoin de générer une table de requête à l'aide d'une macro (j'ai le code pour ça) et après que, avec l'aide de macros j'ai besoin d'appliquer des formules qui utilisent les données dans la table de requête. Le problème que je suis confronté est que la table de requête n'apparaît qu'après le Sous, dans laquelle le code est, a fini de travailler. Cela signifie que je ne peux pas inclure le code qui génère les formules, car il n'y a pas de données pour les formules à être généré.
L'idée est d'écrire un module qui exécute d'autres modules:
Sub moduleController()
Run "Module1"
Run "Module2"
End Sub
Cela donne l'erreur:
Erreur d'exécution 1004 - ne peut pas exécuter la macro "macroname". La macro peut ne pas être disponible dans ce classeur ou toutes les macros peuvent être désactivées.
Ce qui pourrait être la solution? Peut-être il ya une autre solution pour mon problème de chargement d'une table de requête?
.Refresh BackgroundQuery:=False
.OriginalL'auteur ositra | 2012-03-28
Vous devez vous connecter pour publier un commentaire.
Aussi longtemps que les macros en question sont dans le même classeur et vous vérifiez les noms existent, vous pouvez appeler ces macros à partir de n'importe quel autre module par nom, pas par module.
Donc, si dans Module1-vous eu deux macros Macro1 et Macro2 et dans Module2-vous eu des Macro3 et Macro 4, puis dans une autre macro, vous pouvez appeler tous les:
Merci à vous, Jerry! Vous l'avez résolu! Il convient de noter qu'un autre problème que je suis tombé sur était que le nom de la macro ne peut pas être le même que le nom du module. Ils doivent être différents!
OriginalL'auteur Jerry Beaucaire
Est "Module1" partie d'un même classeur qui contient "moduleController"?
Si non, vous pourriez appel public à la méthode de "Module1" à l'aide de
Application.Run someWorkbook.xlsm!methodOfModule
.OriginalL'auteur shahkalpesh
Je viens d'apprendre quelque chose de nouveau grâce à Artiso. J'ai donné à chaque module un nom dans la boîte de propriétés. Ces noms ont également été ce que j'ai déclaré dans le module. Quand j'ai essayé d'appeler mon deuxième module, j'ai continué à obtenir une erreur: erreur de Compilation: Taux variable ou d'une procédure, pas de module
Après la lecture de Artiso du commentaire ci-dessus de ne pas avoir le même nom, j'ai renommé mon deuxième module, appelé à partir de la première, et le problème est résolu. Des choses intéressantes! Merci pour l'info Artiso!
Dans le cas de mon expérience n'est pas clair:
Nom Du Module: AllFSGroupsCY
Public Sub AllFSGroupsCY()
Nom Du Module: AllFSGroupsPY
Public Sub AllFSGroupsPY()
De AllFSGroupsCY()
OriginalL'auteur KeithG