VBA Listbox - Επιλεγμένο στοιχείο

Αυτό το άρθρο θα δείξει πώς να εργαστείτε με το επιλεγμένο στοιχείο σε ένα πλαίσιο λίστας στο Excel VBA.

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

Δημιουργία πλαισίου λίστας σε μορφή VBA

Για να δημιουργήσουμε ένα πλαίσιο λίστας σε μορφή VBA, πρέπει πρώτα να δημιουργήσουμε το UserForm.

Αφού δημιουργήσετε τη φόρμα σας, επιλέξτε το πλαίσιο ελέγχου Λίστα στην εργαλειοθήκη και, στη συνέχεια, σύρετε για να δημιουργήσετε ένα πλαίσιο λίστας στη φόρμα σας.

Προσθήκη τιμών στο πλαίσιο λίστας

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

123456 Private Sub UserForm_Initialize ()Dim rng As RangeΓια κάθε rng εντός εμβέλειας ("A1: A50")Me.lstState.AddItem rng.ValueΕπόμενο rngΤέλος υπο

Όταν εκτελούμε τη φόρμα, το πλαίσιο λίστας θα εμφανιστεί όπως φαίνεται στην παρακάτω εικόνα:

Επιλογή τιμών από το πλαίσιο λίστας

Από προεπιλογή, μια μεμονωμένη τιμή μπορεί να επιλεγεί σε ένα πλαίσιο λίστας σε μορφή χρήστη. Ωστόσο, αυτό μπορεί να τροποποιηθεί αλλάζοντας την ιδιότητα Πολλαπλής επιλογής του πλαισίου λίστας.

Κάντε κλικ στο πλαίσιο λίστας για να το επιλέξετε και, στη συνέχεια, στο παράθυρο Ιδιότητες, αλλάξτε την ιδιότητα πολλαπλής επιλογής από 0-frmMultiSelectSingle προς το 1-frmMultiSelectMulti.

Τώρα όταν εκτελούμε τη φόρμα, μπορούμε να επιλέξουμε περισσότερες από μία επιλογές στο πλαίσιο λίστας.

Αν αλλάξουμε την επιλογή να είμαστε 2-frmMultiSelectExtended, σημαίνει ότι μπορούμε να επιλέξουμε μία από τις τιμές και, στη συνέχεια, κρατώντας πατημένο το πλήκτρο SHIFT, επιλέξτε μια άλλη τιμή πιο κάτω από τη λίστα και όλα τα στοιχεία μεταξύ των 2 επιλεγμένων τιμών θα επιλεγούν επίσης.

Προγραμματισμός VBA | Το Code Generator λειτουργεί για εσάς!

Εργασία με τις Επιλεγμένες τιμές στο VBA

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

Ανάθεση της τιμής σε μια μεταβλητή

Μπορούμε να χρησιμοποιήσουμε το After_Update συμβάν του πλαισίου λίστας για την εκχώρηση της επιλεγμένης τιμής σε μια μεταβλητή.

Πρώτον, ας δημιουργήσουμε μια μεταβλητή επιπέδου μονάδας στο επάνω μέρος της ενότητας φόρμας.

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

1 Dim strState as String.

Αφού δημιουργήσουμε αυτήν τη μεταβλητή, μπορούμε να κάνουμε διπλό κλικ στο πλαίσιο Λίστα για να μεταβούμε στον κώδικα πίσω από τη φόρμα ή μπορούμε να κάνουμε κλικ στο κουμπί κώδικα στο πρόγραμμα επεξεργασίας VBE.

Θα δημιουργηθεί αυτόματα το πλαίσιο κλικ του συμβάντος της λίστας. Επίλεξε το After_Update Εκδήλωση από τη λίστα των διαθέσιμων διαδικασιών.

Στο συμβάν After_Update, πληκτρολογήστε τον ακόλουθο κώδικα:

123 Private Sub lstState_AfterUpdate ()strState = Me.lstStateΤέλος υπο

ΣΗΜΕΙΩΣΗ: Μπορείτε να διαγράψετε το συμβάν κλικ, καθώς δεν απαιτείται.

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

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

Μπορούμε να δούμε αυτήν την τιμή ακουμπώντας το ποντίκι στη μεταβλητή.

Ή

Μπορούμε να δούμε την τιμή στο άμεσο παράθυρο.

Κουραστήκατε να ψάχνετε για παραδείγματα κώδικα VBA; Δοκιμάστε το AutoMacro!

Χρησιμοποιώντας ένα κουμπί εντολών για να επιστρέψετε την τιμή στο Excel

Πρώτον, δημιουργούμε ένα κουμπί εντολών στη φόρμα για να έχουμε ένα κουμπί OK για να επιστρέψουμε την τιμή ή τις τιμές που έχουν επιλεγεί στο πλαίσιο λίστας στο Excel.

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

Στο παράθυρο Ιδιότητες, αλλάξτε το όνομα του κουμπιού σε cmdOK, και αλλάξτε τη Λεζάντα και τον Επιταχυντή του κουμπιού.

Ο σκοπός του Accelerator είναι ο χρήστης να χρησιμοποιήσει το πληκτρολόγιο για να ενεργοποιήσει το κουμπί, σε αυτή την περίπτωση Alt+O θα ενεργοποιήσει το κουμπί.

Για να λειτουργήσει το κουμπί εντολών, πρέπει να προσθέσουμε κώδικα πίσω από αυτό, έτσι ώστε όταν γίνεται κλικ στο κουμπί, ο κώδικας να τρέχει. Αυτό ονομάζεται συμβάν κλικ του κουμπιού.

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

Πληκτρολογήστε τον ακόλουθο κώδικα στο συμβάν κλικ του κουμπιού εντολών.

123 Private Sub cmdOK_Click ()Εύρος ("E1") = strStateΤέλος υπο

Ο κώδικας θα πάρει τη μεταβλητή που δηλώσαμε στο συμβάν After_Update του ListBox και θα επιστρέψει την τιμή στο εύρος στο Excel.

Εναλλακτικά, μπορούμε να πάρουμε την τιμή απευθείας από το πλαίσιο λίστας χωρίς να χρησιμοποιήσουμε μια μεταβλητή.

123 Private Sub cmdOK_Click ()Εύρος ("E1") = me.lstStateΤέλος υπο

Όταν εκτελέσουμε τη φόρμα, η επιλεγμένη τιμή θα επιστρέψει στο Excel όταν κάνουμε κλικ στο κουμπί OK.

Επιλογή πολλαπλών τιμών

Εάν έχουμε ορίσει την ιδιότητα πολλαπλής επιλογής του πλαισίου λίστας σε 1 ή 2 που μας επιτρέπει να επιλέξουμε πολλές τιμές στη λίστα, τότε ο κώδικας για την επιλογή αυτών των τιμών είναι ελαφρώς διαφορετικός.

ο After_Update το συμβάν δεν ενεργοποιείται πλέον κατά την επιλογή των τιμών στο πλαίσιο λίστας - επομένως δεν μπορούμε να χρησιμοποιήσουμε αυτό το συμβάν.

Μπορούμε ακόμα να χρησιμοποιήσουμε το συμβάν κλικ του κουμπιού εντολών, αλλά πρέπει να κάνουμε αναζήτηση στις τιμές που έχουν επιλεγεί στο πλαίσιο λίστας για να τις επιστρέψουμε στο Excel.

Στο κουμπί εντολών Κάντε κλικ στο συμβάν, πληκτρολογήστε τον ακόλουθο κώδικα.

12345678910 Private Sub cmdOK_Click ()Dim x ως ακέραιοςΕύρος ("E1"). ΕπιλέξτεΓια x = 0 To Me.lstState.ListCount - 1Αν Me.lstState.Selected (x) = True ΤότεActiveCell = Me.lstState.List (x)ActiveCell.Offset (1, 0). ΕπιλέξτεΤέλος εανΕπόμενο xΤέλος υπο

Τώρα όταν εκτελούμε τη φόρμα, μόνο οι τιμές που είναι επιλεγμένες θα επιστρέψουν στο φύλλο Excel.

Θα βοηθήσει στην ανάπτυξη του τόπου, μοιράζονται τη σελίδα με τους φίλους σας

wave wave wave wave wave