VBA - Πώς να δημιουργήσετε ένα UserForm σε μια ενότητα κλάσης
- Προϋποθέσεις
- Ο κώδικας
- Η ενότητα κλάσης
- Η λειτουργία κλήσης
Προϋποθέσεις
Μεταβείτε στις επιλογές του Excel > Διαχείριση αξιοπιστίας > Ρυθμίσεις μακροεντολών και βεβαιωθείτε ότι είναι ενεργοποιημένη η ακόλουθη επιλογή: Εμπιστευθείτε την πρόσβαση στο μοντέλο αντικειμένου έργου VBA .Ο κώδικας απαιτεί επίσης τις παρακάτω παραπομπές, συγκεκριμένα τη βιβλιοθήκη αντικειμένων Microsoft Forms 2.0 και το Microsoft Visual Basic For Applications Extensibility 5.3 . Μπορείτε να τα ενεργοποιήσετε κάνοντας κλικ στο μενού Εργαλεία του επεξεργαστή VBA και έπειτα στις Αναφορές .
Ο κώδικας
Σε αυτό το παράδειγμα, θα δημιουργήσουμε μια φόρμα χρήστη που θα περιέχει δύο κουμπιά. Αφού κάνετε κλικ σε αυτά τα κουμπιά, η λεζάντα θα εμφανιστεί στον κωδικό της λειτουργίας κλήσης.Η ενότητα κλάσης
Δημιουργήστε μια ενότητα κλάσης στο έργο VBA σας, ονομάστε την ως PremierExemple (ClassName ιδιότητα) και εισαγάγετε αυτόν τον κώδικα:Προαιρετική επιλογή'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!
'Ενεργοποίηση των ακόλουθων αναφορών (Εργαλεία> Αναφορές)
"Βιβλιοθήκη αντικειμένων Microsoft Forms 2.0
'Microsoft Visual Basic για εφαρμογές Επεκτασιμότητα 5.3
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!
Δημόσιο maForm ως αντικείμενο "Χρήστη
Δημόσιο με το μπουτόν με το μπουτόν ως πλήκτρο MSForms.CommandButton
Δημόσιο Dico ως αντικείμενο 'Objet Dictionnary = Συλλογή αντικειμένων
Private Nom As String 'Nom => Δημιουργία ή διαγραφή userform
Ιδιωτική Sub Class_Initialize ()
'Δημιουργία τάξης
Ορίστε Dico = CreateObject ("Scripting.dictionary")
End Sub
Τιμή δημόσιας λειτουργίας ()
'Η μέθοδος Value de notre Classe επιτρέπει τη δημιουργία της φόρμας χρήστη
'και επιστρέφει μια τιμή
NewUsf "Mon premier UserForm" 'δημιουργία userform
NewBouton "toto", "TOTO", 120, 30, 5, 5 'δημιουργήστε το κουμπί TOTO
NewBouton "titi", "TITI", 120, 30, 5, 35 'δημιουργούν το κουμπί TITI
maForm.Show '
Στο σφάλμα GoTo σφάλματος
Η τιμή = maForm.Tag 'αντιστοιχίζει την τιμή που περιέχεται στην ετικέτα του userform στη λειτουργία μας.
Εκφορτώστε το maForm
Λειτουργία εξόδου
πτερύγιο:
Λειτουργία τερματισμού
Ιδιωτική Sub NewUsf (monCaption ως String)
'Δημιουργία μορφής χρήστη
Ορίστε maForm = ThisWorkbook.VBProject.VBComponents.Add (3)
Nom = maForm.Name
VBA.UserForms.Add (Nom)
Ορισμός maForm = UserForms (UserForms.Count - 1)
Με maForm
.Caption = monCaption
.Width = 150
. Υψος = 100
Τέλος με
End Sub
Public Sub NewBouton (όνομα ως συμβολοσειρά, λεζάντα ως συμβολοσειρά, πλάτος ως διπλό, Ύψος ως Διπλό, Αριστερό ως Διπλό, Αρχή ως Διπλό)
'Δημιουργία ενός κουμπιού ελέγχου
Dim Obj
Ορίστε Obj = maForm.Controls.Add ("forms.CommandButton.1")
Εάν Obj = True τότε Exit Sub
Dim cls As New PremierExemple
Ορίστε cls.maForm = maForm
Ορίστε cls.Bouton = Obj
Με cls.Bouton
.Name = Όνομα
.Caption = Λεζάντα
. Μετακινήστε αριστερά, κορυφή, πλάτος, ύψος
Τέλος με
Dico.Add Name, cls
Ορισμός cls = Τίποτα
End Sub
Private Sub Bouton_Click ()
'διαδικασία για κλικ για κλικ
maForm.Tag = Bouton.Caption
maForm.Hide
End Sub
Ιδιωτική Sub Class_Terminate ()
'διαγραφή κλάσης
Dim VBComp ως VBComponent
Ορίστε Dico = Τίποτα »διαγράψτε όλες τις εμφανίσεις του class => όλων των κουμπιών
Αν Nom "" Then "αν είναι το userform (η μοναδική εμφάνιση που έχει την ιδιότητα" Nom "συμπληρώθηκε)
Ορίστε την αναζήτηση VBComp = ThisWorkbook.VBProject.VBComponents (Nom) '
ThisWorkbook.VBProject.VBComponents.Remove Διαγραφή VBComp
Τέλος εαν
End Sub
Η λειτουργία κλήσης
Η διαδικασία για τη λειτουργία κλήσης είναι πολύ απλοποιημένη ... χάρη στην ενότητα κλάσης, έχετε πρόσβαση σε μια μέθοδο χρήστη και μια τιμή. Επιστρέφεται με απλό τρόπο, χρησιμοποιώντας τον παρακάτω κωδικό:Sub test ()Dim MyForm ως νέο PremierExemple
MsgBox MyForm.Value
Ορισμός MyForm = Τίποτα
End Sub