/ / / Πολλαπλές επιλογές πλαισίου λίστας στο Excel VBA

Πολλαπλές επιλογές πλαισίου λίστας στο Excel VBA

ο Ιδιότητα MultiSelect σε Excel VBA επιτρέπει σε ένα χρήστη να επιλέξει πολλά στοιχεία σε ένα πλαίσιο λίστας. Το Userform που πρόκειται να δημιουργήσουμε φαίνεται ως εξής:

Πολλαπλές επιλογές πλαισίου λίστας στο Excel VBA

Για να δημιουργήσετε αυτό το Userform, εκτελέστε τα παρακάτω βήματα.

1. Ανοίξτε τον Επεξεργαστή Visual Basic. Εάν το Explorer του έργου δεν είναι ορατό, κάντε κλικ στην επιλογή Προβολή, Εξερεύνηση έργου.

2. Κάντε κλικ στην επιλογή Εισαγωγή, Χρήστης. Εάν η Εργαλειοθήκη δεν εμφανίζεται αυτόματα, κάντε κλικ στην επιλογή Προβολή, Εργαλειοθήκη. Η οθόνη σας πρέπει να ρυθμιστεί ως εξής.

Οθόνη ρύθμισης παραμέτρων χρήστη στο Excel VBA

3. Προσθέστε τα πλαίσια λίστας (πρώτα στα αριστερά, το δεύτερο στα δεξιά), τα κουμπιά εντολών, τα πλαίσια ελέγχου (πρώτα στα αριστερά, το δεύτερο στα δεξιά), τα κουμπιά και τα κουμπιά επιλογών (πρώτα στην κορυφή, , και ούτω καθεξής). Μόλις ολοκληρωθεί αυτό το αποτέλεσμα, το αποτέλεσμα πρέπει να είναι συνεπές με την εικόνα του Userform που παρουσιάστηκε νωρίτερα. Για παράδειγμα, δημιουργήστε ένα πλαίσιο ελέγχου λίστας κάνοντας κλικ στο Λίστα λίστας από την Εργαλειοθήκη. Στη συνέχεια, μπορείτε να σύρετε ένα πλαίσιο λίστας στο Userform. Όταν φτάσετε στο πλαίσιο "Επιλογή Τύπου", θυμηθείτε να σχεδιάσετε αυτό το πλαίσιο πρώτα πριν τοποθετήσετε τα τρία κουμπιά επιλογής σε αυτό.

4. Μπορείτε να αλλάξετε τα ονόματα και τις λεζάντες των στοιχείων ελέγχου. Τα ονόματα χρησιμοποιούνται στον κώδικα Excel VBA. Οι λεζάντες είναι αυτές που εμφανίζονται στην οθόνη σας. Είναι καλή πρακτική η αλλαγή των ονομάτων των στοιχείων ελέγχου, αλλά δεν είναι απαραίτητο εδώ επειδή έχουμε μόνο λίγα στοιχεία ελέγχου σε αυτό το παράδειγμα. Για να αλλάξετε τη λεζάντα του Userform, κουμπιά εντολών, πλαίσια ελέγχου, κουμπιά και κουμπιά επιλογών, κάντε κλικ στην επιλογή Προβολή, Παράθυρο ιδιοτήτων και κάντε κλικ σε κάθε στοιχείο ελέγχου.

5. Για να εμφανίσετε το Userform, τοποθετήστε ένα κουμπί εντολής στο φύλλο εργασίας σας και προσθέστε την ακόλουθη γραμμή κώδικα:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Τώρα θα δημιουργήσουμε το Sub UserForm_Initialize. Όταν χρησιμοποιείτε τη μέθοδο εμφάνισης για τη φόρμα χρήστη, αυτό το υποσύνολο θα εκτελείται αυτόματα.

6. Ανοίξτε τον επεξεργαστή της Visual Basic.

7. Στην Εξερεύνηση έργου, κάντε δεξί κλικ στο UserForm1 και, στη συνέχεια, κάντε κλικ στην επιλογή Προβολή κωδικού.

8. Αρχικά, δηλώστε τη μεταβλητή i του τύπου Integer. Δηλώστε τη μεταβλητή στην ενότητα Γενικές δηλώσεις (στην κορυφή του κώδικα). Με αυτόν τον τρόπο πρέπει να δηλώσετε μόνο τη μεταβλητή μία φορά και μπορείτε να την χρησιμοποιήσετε σε πολλαπλές υποσυνθέσεις.

Dim i As Integer

9. Επιλέξτε Userform από την αριστερή αναπτυσσόμενη λίστα. Επιλέξτε Αρχικοποίηση από τη δεξιά αναπτυσσόμενη λίστα.

10. Προσθέστε τις ακόλουθες γραμμές κώδικα:

Private Sub UserForm_Initialize()

With ListBox1
    .AddItem "Sales"
    .AddItem "Production"
    .AddItem "Logistics"
    .AddItem "Human Resources"
End With

OptionButton3.Value = True

End Sub

Επεξήγηση: θα συμπληρωθεί το πρώτο πλαίσιο λίστας και το τρίτο κουμπί επιλογής έχει οριστεί ως προεπιλογή.

Δημιουργήσαμε τώρα το πρώτο μέρος του Userform. Παρόλο που φαίνεται ήδη καθαρό, τίποτα δεν θα συμβεί ακόμα όταν κάνουμε κλικ στα κουμπιά εντολών ή στα άλλα στοιχεία ελέγχου.

11. Στην Εξερεύνηση έργου, κάντε διπλό κλικ στο UserForm1.

12. Κάντε διπλό κλικ στο κουμπί Προσθήκη.

13. Προσθέστε τις ακόλουθες γραμμές κώδικα:

Private Sub CommandButton1_Click()

For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then ListBox2.AddItem ListBox1.List(i)
Next i

End Sub

Επεξήγηση: Το Excel VBA βγαίνει από το πρώτο πλαίσιο λίστας (αριθμός ευρετηρίου λίστας μηδέν (0) για το πρώτο στοιχείο της λίστας) και, εάν επιλεγεί, προσθέτει το στοιχείο στο δεύτερο πλαίσιο λίστας.

14. Κάντε διπλό κλικ στο κουμπί Κατάργηση.

15. Προσθέστε τις ακόλουθες γραμμές κώδικα:

Private Sub CommandButton2_Click()

Dim counter As Integer
counter = 0

For i = 0 To ListBox2.ListCount - 1
    If ListBox2.Selected(i - counter) Then
        ListBox2.RemoveItem (i - counter)
        counter = counter + 1
    End If
Next i

CheckBox2.Value = False

End Sub

Επεξήγηση: Το Excel VBA βγαίνει από το δεύτερο πλαίσιο λίστας και, εάν επιλεγεί, καταργεί το στοιχείο. Η μεταβλητή μετρητή παρακολουθεί τον αριθμό των αντικειμένων που έχουν αφαιρεθεί.

16. Κάντε διπλό κλικ στο πρώτο κουμπί επιλογής.

17. Προσθέστε τις ακόλουθες γραμμές κώδικα:

Private Sub OptionButton1_Click()

ListBox1.MultiSelect = 0
ListBox2.MultiSelect = 0

End Sub

18. Κάντε διπλό κλικ στο δεύτερο κουμπί επιλογής.

19. Προσθέστε τις ακόλουθες γραμμές κώδικα:

Private Sub OptionButton2_Click()

ListBox1.MultiSelect = 1
ListBox2.MultiSelect = 1

End Sub

20. Κάντε διπλό κλικ στο τρίτο κουμπί επιλογής.

21. Προσθέστε τις ακόλουθες γραμμές κώδικα:

Private Sub OptionButton3_Click()

ListBox1.MultiSelect = 2
ListBox2.MultiSelect = 2

End Sub

Εξήγηση: η επιλογή "Επιλογή Τύπου" μπορεί να επιλεγεί κάνοντας κλικ στα κουμπιά επιλογών. Η εικόνα του Userform που απεικονίζεται παραπάνω δίνει μια περιγραφή για κάθε ρύθμιση. Αντί να ρυθμίσετε αυτήν τη ρύθμιση κατά το χρόνο εκτέλεσης, μπορείτε επίσης να διαμορφώσετε αυτήν τη ρύθμιση κατά την προγραμματισμένη ώρα. Για να το επιτύχετε αυτό, κάντε δεξί κλικ σε ένα πλαίσιο ελέγχου λίστας και, στη συνέχεια, κάντε κλικ στην επιλογή Ιδιότητες. Ορίστε την ιδιότητα MultiSelect σε 0 - fmMultiSelectSingle, 1 - fmMultiSelectMulti ή ​​2 - fmMultiSelectExtented.

22. Κάντε διπλό κλικ στο πρώτο πλαίσιο ελέγχου.

23. Προσθέστε τις ακόλουθες γραμμές κώδικα:

Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = True
    Next i
End If

If CheckBox1.Value = False Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = False
    Next i
End If

End Sub

Επεξήγηση: με τον έλεγχο του πρώτου πλαισίου ελέγχου, όλα τα στοιχεία του πρώτου πλαισίου λίστας μπορούν να επιλεγούν / απενεργοποιηθούν.

24. Κάντε διπλό κλικ στο δεύτερο πλαίσιο ελέγχου για να προσθέσετε τις ίδιες γραμμές κώδικα. Αντικαταστήστε το CheckBox1 με το CheckBox2 και το ListBox1 με το ListBox2.

Επίσης διαβάστε: