2011-05-05 8 views
0

Je voudrais avoir un formulaire complexe qui utilise divers fichiers de script VBA. Mais quand je référence un autre module, le "Moi" ne fonctionne pas. Est-il possible d'utiliser différents modules et d'être comme un seul fichier? ou quelles autres meilleures pratiques pouvez-vous me donner? Le problème, c'est que Im utilisant VBA pendant 2 jours ..Comment gérer les scripts VBA pour un formulaire complexe?

+0

Avoir plusieurs modules dans le même projet ne devrait pas être un problème, tant que les procédures dont vous avez besoin sont 'Public'. Dans quel contexte "Le Moi" ne fonctionne-t-il pas? Montrez-nous du code! –

+0

De quel type de modules parlez-vous? Seuls les modules de classe utilisent le mot-clé Me, soit des modules de classe de formulaire, soit des modules de classe autonomes. Les modules de code autonomes ne peuvent pas utiliser le mot-clé Me. –

Répondre

2

Dites que vous avez une procédure, "DoSomethingWithForm", dans un module standard. Modifiez-le pour attendre une référence de formulaire en tant que paramètre.

Public Sub DoSomethingWithForm(ByRef frm As Form) 
    MsgBox "The name of this form is " & frm.Name 
End Sub 

Ensuite, votre formulaire peut appeler la procédure comme ceci:

Private Sub cmdWhoAmI_Click() 
    DoSomethingWithForm Me 
End Sub 
+0

donc pour chaque module externe je dois passer le formulaire comme argument? –

+0

Vous n'êtes pas obligé. Dans le module externe, vous pouvez vous référer à un formulaire ouvert sous la forme 'Forms! Form_name' ou' Forms ("form_name") '... mais vous devez changer le module quand/si vous changez 'form_name'. De la façon que j'ai suggéré, le code ne se cassera pas lorsque le formulaire est renommé. – HansUp

Questions connexes