Création de formulaire par programmation dans le module à l'aide de vba
Je veux créer un formulaire utilisateur dans le module à l'aide de VBA programmation. Je suis un novice et inexpérimenté, j'ai donc essayé quelques exemples, mais ils ne répondent pas à mes exigences.
Je veux juste macro qui
- crée un formulaire utilisateur dans un module à l'aide de VBA
- a une zone de liste avec des données
- a un bouton de commande avec un écouteur
Voici le code que j'ai utilisé
Option Explicit
Sub MakeuserForm()
'Dim CommandButton1 As MsForms.CommandBarButton
'Dim ListBox1 As MsForms.ListBox
Dim UserForm1 As VBComponent
Set UserForm1 = ActiveWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
With UserForm1
.Properties("Height") = 100
.Properties("Width") = 200
On Error Resume Next
.Name = "My Form"
.Properties("Caption") = "This is your user form"
End With
ShowForm
End Sub
Sub ShowForm()
NewForm.Show
End Sub
Maintenant, je ne sais pas comment faire pour ajouter de la zone de liste et le bouton à l'écran avec un écouteur.
Post ce que vous avez essayé et s'il vous plaît lire la FAQ stackoverflow.com/faq. Ce n'est pas le lieu pour obtenir des réponses rapides c'est un lieu d'apprentissage.
Mise à jour de la question
Créer l'ensemble des formes de manière dynamique comme ce n'est généralement pas aussi bien que vous ne le pensez. Sauf si vous êtes vraiment incapable de fabriquer une version générique, au moins une sorte de squelette, cela va être tout un diable de beaucoup de travail inutile.
Veuillez expliquer pourquoi la forme doit être créé à la volée. Sauf si vous avez un besoin spécifique, comme Brad a expliqué il y a beaucoup de travail.
je veux le faire de manière dynamique tout simplement parce que je veux créer un Addin pour que l'autre les utilisateurs peuvent importer facilement que Addin dans leur Feuille Excel. ((Si je créer un utilisateur formulaire qu'ils peuvent également créer un formulaire utilisateur afin d'utiliser mon Complément.))
Mise à jour de la question
Créer l'ensemble des formes de manière dynamique comme ce n'est généralement pas aussi bien que vous ne le pensez. Sauf si vous êtes vraiment incapable de fabriquer une version générique, au moins une sorte de squelette, cela va être tout un diable de beaucoup de travail inutile.
Veuillez expliquer pourquoi la forme doit être créé à la volée. Sauf si vous avez un besoin spécifique, comme Brad a expliqué il y a beaucoup de travail.
je veux le faire de manière dynamique tout simplement parce que je veux créer un Addin pour que l'autre les utilisateurs peuvent importer facilement que Addin dans leur Feuille Excel. ((Si je créer un utilisateur formulaire qu'ils peuvent également créer un formulaire utilisateur afin d'utiliser mon Complément.))
OriginalL'auteur IConfused | 2012-07-17
Vous devez vous connecter pour publier un commentaire.
Après le labeur, j'ai trouvé une réponse très simple à ma question. Peut vous aider aussi.
NewFrame
?NB, le bouton de commande a besoin d'un gestionnaire d'événements, de sorte que doit être codé en dur avec
insertlines
. Cependant rien dans leUserForm_Initialize
routine peut effectivement venir entreVBA.UserForms.Add(myForm.Name)
etShow
. Donc, pour le remplissage de la liste,Set newUf = VBA.UserForms.Add(myForm.Name)
, puis une boucle sur une liste d'objets à fairenewUf.lst_1.addItem
est beaucoup plus facile que de coder en dur le code des chaînes de caractères. EnfinnewUf.Show
une fois tous ensemble jusqu'OriginalL'auteur IConfused