Le tableau de variantes passé de UserForm vers Module dans VBA est nul / vide

J'ai un UserForm avec un ListBox pour que l'user puisse sélectionner des valeurs. Ces valeurs sont UserForm_Initialize() dans UserForm_Initialize() via un appel de fonction au module de base, qui renvoie un tableau comme variante. Cela fonctionne sans problème.

Si l'user sélectionne certaines valeurs et appuie sur un button, les buttons Click event appellent une autre fonction dans le module de base pour transmettre le tableau entré par l'user et calculer les choses. Cela ne fonctionne pas du tout. La valeur reçue dans le module de base est toujours inexistante (pas même nulle, mais je ne connais pas le terme VBA correct, rien n'est là).


Les choses que j'ai essayé jusqu'à présent:

  • Passer tous les arguments ByVal: N'a pas fait de différence
  • Utilisation de variables globales partagées: cela a fonctionné, mais je ne veux pas countr sur eux si tout ce que je fais est de passer un seul tableau à une seule fonction. Cela introduit également l'état dans le code qui doit être géré, en particulier lors de la réutilisation de la fonction
  • Accès aux fonctions par les éliminatoires: N'a pas fait de différence. Les fonctions sont trouvées et exécutées correctement, mais les variables d'argument sont vides, donc les fonctions échouent plus tard lors des calculs.

Ma question est la suivante: Comment puis-je passer des arrays de UserForms à Modules (pas vice versa) sans countr sur des variables globales et sans perdre le contenu du tableau?

Cette question peut être liée à cette question sur le passage d'une string du formulaire au module , mais la réponse acceptée ne m'intéresse pas (en utilisant les variables globales).

Lors de l'ajout du code tel que demandé dans les commentaires, je suis tombé sur le fait que je pourrais imprimer le contenu du tableau, mais il ne montrerait rien dans le débogueur et la taille serait 0.

La question de la taille était parce que j'avais utilisé Len(array) au lieu de Application.CountA(array) et que j'avais un rest sur le On error resume next de l'ancien encore dans le code, ce qui signifiait qu'aucune erreur n'a été soulevée et que la taille était toujours mise à zéro. … C'était la raison du comportement étrange.