VBA - Πώς να δημιουργήσετε ένα UserForm σε μια ενότητα κλάσης

Δημιουργήστε ένα UserForm που περιέχει έναν δυναμικό αριθμό ελέγχων και βεβαιωθείτε ότι ενεργοποιούνται από συγκεκριμένα συμβάντα. Για να επιτύχουμε αυτό το αποτέλεσμα, θα χρησιμοποιήσουμε ένα UserForm και μια ενότητα κλάσης και θα εκχωρήσουμε οποιοδήποτε έλεγχο που δημιουργήθηκε δυναμικά στο userform στη μονάδα κλάσης. Τέλος, ο στόχος αυτού του εκπαιδευτικού είναι να αποκτήσετε ένα μόνο στοιχείο και να κάνετε τη λειτουργία κλήσης όσο το δυνατόν πιο απλή (περιορίζεται σε 2-3 γραμμές κώδικα).

  • Προϋποθέσεις
  • Ο κώδικας
    • Η ενότητα κλάσης
  • Η λειτουργία κλήσης

Προϋποθέσεις

Μεταβείτε στις επιλογές του 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

Προηγούμενο Άρθρο Επόμενο Άρθρο

Οι Καλύτερες Συμβουλές