Hello.
I apologize for the length of the message
In a Word document, I create a standard module named Module1, a UserForm named UserForm1, and a class module named Classe1.
In Module1 I write the procedure
Code:
Sub MdCoucou()
Debug.Print "Coucou de Module1"
End Sub
In UserForm1 I write the procedure
Code:
Sub UFCoucou()
Debug.Print "Coucou de UserForm1"
End Sub
and in Class1 the procedure
Code:
Sub ClCoucou()
Debug.Print "Coucou de Classe1"
End Sub
1. In the VBE editor, if I put the cursor in the procedure MdCoucou, and type F5, the expected message is displayed normally in the Immediate window.
2. For the UFCoucou procedure, the previous method fails.
I now go to the Immediate window, and type
The expected message is displayed.
3. For the ClCoucou procedure, the first method fails, and if I type
in the Immediate window, a message tells me
Runtime error '424':
Object required
So I type
Code:
Set cl = New Classe1
then
and there it works.
Here are my questions:
How can these differences in behavior be explained?
For the class module, you must instantiate Classe1 to use the ClCoucou procedure.
I thought UserForms were special class modules. But method 2 shows that I am wrong.
What is the exact nature of UserForms? Class or object?
Thank you in advance for your answers
En Français
Bonjour.
Dans un document Word, je crée un module standard nommé Module1, une UserForm nommée UserForm1 et un module de classe nommé Classe1.
Dans Module1, j'écris la procédure
Code:
Sub MdCoucou()
Debug.Print "Coucou de Module1"
End Sub
Dans UserForm1, j'écris la procédure
Code:
Sub UFCoucou()
Debug.Print "Coucou de UserForm1"
End Sub
et dans Classe1 la procédure
Code:
Sub ClCoucou()
Debug.Print "Coucou de Classe1"
End Sub
1. Dans l'éditeur VBE, si je mets le curseur dans la procédure MdCoucou, et tape F5, le message attendu s'affiche normalement dans la fenêtre Exécution.
2. Pour la procédure UFCoucou, la méthode précédente échoue.
Je vais maintenant dans la fenêtre Exécution, et je tape
Le message attendu s'affiche.
3. Pour la procédure ClCoucou, la première méthode échoue, et si je tape
dans la fenêtre exécution, un message me dit
Erreur dexécution '424' :
Objet requis
Je tape donc
Code:
Set cl = New Classe1
puis
et là, ça fonctionne.
Voici mes questions :
Comment expliquer ces différences de comportements ?
Pour le module de classe, il faut instancier la Classe1 pour utiliser la procédure ClCoucou.
Je croyais que les UserForm étaient des modules de classe spéciaux. Mais la méthode 2 montre que je suis dans l'erreur.
Quelle est la nature exacte des UserForm ? Classe ou objet ?