Δημιουργία φορμών χρηστών VBA

Μορφές χρηστών VBA

Το Userform είναι ένα πολύ σημαντικό μέρος του προγραμματισμού σε VBA. Σας επιτρέπει να δημιουργήσετε ένα επαγγελματικό περιβάλλον εργασίας χρήστη για επικοινωνία με τους χρήστες της εφαρμογής σας VBA. Σας επιτρέπει επίσης να ελέγχετε πλήρως τον χρήστη στο τι κάνουν στο βιβλίο εργασίας σας.

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

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

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

Ένα σημαντικό σημείο είναι ότι όταν εμφανίζετε μια μορφή χρήστη που είναι ενσωματωμένη ή είναι modal, δεν μπορείτε να επεξεργαστείτε τον κώδικά σας στο VBE ούτε να αποκτήσετε πρόσβαση σε οποιαδήποτε λειτουργικότητα του Excel. Μόνο όταν η φόρμα είναι κλειστή, ο δρομέας θα εμφανιστεί στον κωδικό σας.

Ενσωματωμένες φόρμες χρηστών VBA

Excel VBA ως πολλές ενσωματωμένες φόρμες που μπορούν να χρησιμοποιηθούν για επικοινωνία με τον χρήστη.

Κουτί μηνυμάτων

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

Αυτό είναι ένα βασικό παράδειγμα. Υπάρχει μόνο ένα κουμπί για να κάνετε κλικ και η γραμμή τίτλου λέει "Microsoft Excel"

Ο κώδικας για την παραγωγή αυτού είναι πολύ απλός:

123 Sub TestMsgBox ()MsgBox "Αυτή η διαδικασία ολοκληρώθηκε"Τέλος υπο

Μπορείτε να χρησιμοποιήσετε διαφορετικές παραμέτρους για να προσθέσετε κουμπιά, εικονίδια και να αλλάξετε τη γραμμή τίτλου

123456789 Sub TestMsgBox ()Dim Ret As VariantRet = MsgBox ("Είστε σίγουροι;", vb Ναι Όχι v vbQuestion, "My Application")Αν Ret = vbΝαι Τότε«Η διαδικασία σας εδώΑλλούΈξοδος SubΤέλος εανΤέλος υπο

Αυτός ο κώδικας προσθέτει ένα κουμπί «Ναι» και «Όχι» και ένα εικονίδιο ερωτηματικού και ορίζει τη γραμμή τίτλου. Σημειώστε ότι μπορείτε να συνδυάσετε τα στυλ του πλαισίου μηνυμάτων χρησιμοποιώντας τον τελεστή «Or»

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

Κουτί εισαγωγής

Υπάρχει ένα πολύ απλό πλαίσιο εισόδου ενσωματωμένο στο VBA, αν και είναι αρκετά περιοριστικό σε αυτό που μπορείτε να κάνετε με αυτό. Εάν μπορείτε, είναι καλύτερα να σχεδιάσετε μια προσαρμοσμένη μορφή χρήστη

12345 Sub TestInputBox ()Dim Ret As StringRet = InputBox ("Παρακαλώ εισάγετε το όνομά σας", "Εισαγάγετε όνομα")MsgBox RetΤέλος υπο

Μπορείτε επίσης να προσθέσετε μια προεπιλεγμένη τιμή για την εισαγωγή στις παραμέτρους.

Λήψη Ανοιχτού ονόματος αρχείου

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

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

Χρησιμοποιήστε την εντολή "ChDir" για να αλλάξετε τον προεπιλεγμένο κατάλογο στις δικές σας απαιτήσεις πριν εμφανίσετε το παράθυρο διαλόγου αρχείου

Σημειώστε τη χρήση μπαλαντέρ στην παράμετρο FileFilter. Τα αρχεία Excel που θα εμφανίζονται θα μπορούσαν να είναι πριν από το 2007, να έχουν μακροεντολές ή να είναι δυαδικά, οπότε το φίλτρο είναι «.xls*».

123456 Sub TestFileDialog ()Dim MyFile As StringChDir "C: \ temp"MyFile = Application.GetOpenFilename ("Αρχεία Excel (*.xls*),*. Xls*", "Επιλογή αρχείου")MsgBox MyFileΤέλος υπο

Εάν απαιτείται, μπορείτε να επιτρέψετε στο χρήστη να επιλέξει πολλά αρχεία ταυτόχρονα χρησιμοποιώντας την παράμετρο MultiSelect. Η προεπιλογή είναι False (μόνο για μία μόνο επιλογή)

12345678 Sub TestFileDialog ()Dim MyFile As VariantChDir "C: \ temp"MyFile = Application.GetOpenFilename ("Αρχεία Excel (*.xls*),*. Xls*",, "Επιλογή αρχείου",, True)Για κάθε f Στο αρχείο μουMsgBox fΕπόμενο στΤέλος υπο

Ο χρήστης κρατά πατημένο το πλήκτρο Shift στο παράθυρο διαλόγου αρχείου για να επιλέξει πολλά αρχεία.

Ο βρόχος Για κάθε εμφανίζει την πλήρη διαδρομή και το όνομα κάθε επιλεγμένου αρχείου

Προεπιλεγμένοι διάλογοι Excel

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

Ένα καλό παράδειγμα για αυτό είναι η εμφάνιση του διαλόγου "Εκτύπωση" από το VBA:

123 Sub TestPrintDialog ()Εφαρμογή. Διάλογοι (xlDialogPrint). ΕμφάνισηΤέλος υπο

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

Εισαγωγή νέας φόρμας χρήστη

Μπορείτε να σχεδιάσετε τις δικές σας προσαρμοσμένες φόρμες χρήστη εισάγοντας μια φόρμα χρήστη στο Visual Basic Editor (VBE)

Το κάνετε αυτό επιλέγοντας Εισαγωγή | UserForm στη γραμμή μενού VBE.

Κάντε κλικ στο «UserForm» και μια νέα κενή φόρμα θα εμφανιστεί έτοιμη για ανάπτυξη

Η ίδια η πραγματική φόρμα (εμφανίζεται ως «UserForm1») φαίνεται αρκετά μικρή, αλλά μπορείτε να χρησιμοποιήσετε τις λαβές γύρω της για να τις μεγεθύνετε ή να τις κάνετε ακόμη μικρότερες, σύροντας τις λαβές με τον κέρσορα.

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

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

Οι ιδιότητες που βλέπετε αυτήν τη στιγμή ισχύουν μόνο για την ίδια τη φόρμα.

Η ιδιότητα "Όνομα" είναι το όνομα που χρησιμοποιείται για τον καθορισμό του αντικειμένου φόρμας στον κώδικα VBA. Μπορεί να θέλετε να χρησιμοποιήσετε κάτι πιο ουσιαστικό για το όνομα του αντικειμένου, έτσι ώστε όταν αναθεωρείτε τον κώδικά σας, να είναι προφανές ποια φόρμα χρησιμοποιείται.

Η ιδιότητα "Όνομα" θα αντικατοπτρίζεται επίσης στο παράθυρο "Project Explorer" στην επάνω αριστερή γωνία της οθόνης

Θα θέλετε να αλλάξετε τη γραμμή τίτλου της φόρμας σας σε κάτι διαφορετικό από το «UserForm1» και μπορείτε να το κάνετε πληκτρολογώντας το νέο σας κείμενο στην ιδιότητα «Caption»

Μπορείτε να κάνετε έναν τεράστιο αριθμό αλλαγών στον τρόπο με τον οποίο φαίνεται η φόρμα σας από τον χρήστη. Μπορείτε να αλλάξετε χρώματα, να προσθέσετε εικόνες π.χ. ένα εταιρικό λογότυπο, αλλάξτε τη θέση χρησιμοποιώντας «Αριστερά» και «Επάνω», αλλάξτε το μέγεθος χρησιμοποιώντας το «ightψος» και «Πλάτος», αλλάξτε τον δείκτη του ποντικιού και πολλά άλλα

Όλες αυτές οι ιδιότητες μπορούν επίσης να αλλάξουν μέσω προγραμματισμού για οποιοδήποτε στοιχείο ελέγχου που έχετε προσθέσει στη φόρμα σας. Για παράδειγμα, ένας χρήστης μπορεί να επιλέξει από ένα πλαίσιο ελέγχου λίστας και μπορεί να θέλετε να απενεργοποιήσετε ή να αποκρύψετε άλλα στοιχεία ελέγχου με βάση την επιλογή του χρήστη

Χρησιμοποιώντας την Εργαλειοθήκη

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

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

Θα έχετε παρατηρήσει ότι στη φόρμα, υπάρχει ένα δίκτυο κουκκίδων. Αυτό είναι ένα «snapgrid», έτσι ώστε όταν προσθέτετε ένα στοιχείο ελέγχου στη φόρμα, θα ευθυγραμμίσει αυτόματα τη θέση στις γραμμές και τις στήλες των κουκκίδων. Αυτό βοηθάει πάρα πολύ στην ευθυγράμμιση των χειριστηρίων σας, έτσι ώστε να μην έχετε ξεφτισμένη εμφάνιση των χειριστηρίων

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

Μπορείτε να προσθέσετε επιπλέον στοιχεία ελέγχου στην εργαλειοθήκη χρησιμοποιώντας τα Εργαλεία | Πρόσθετα στοιχεία ελέγχου στο μενού VBE. Υπάρχει ένας σημαντικός αριθμός από αυτά τα διαθέσιμα, αλλά ανάλογα με εσάς τις εκδόσεις των Windows και του Excel, δεν λειτουργούν πάντα, οπότε συχνά απαιτείται κάποιος πειραματισμός.

Επίσης, οι χρήστες σας ενδέχεται να μην έχουν πρόσβαση σε ορισμένα από αυτά τα πρόσθετα στοιχεία ελέγχου ή να εκτελούν παλαιότερες εκδόσεις των Windows και του Excel, γεγονός που μπορεί να προκαλέσει προβλήματα. Σε μεγάλους οργανισμούς, ειδικά αν είναι παγκόσμιοι, δεν υπάρχει ένας τυπικός υπολογιστής κατασκευής στον οποίο μπορείτε να βασιστείτε!

Προσθήκη κουμπιού εξόδου στη φόρμα σας

Ένα κουμπί εντολών είναι απλό για προσθήκη στη φόρμα. Αυτό μοιάζει με τα κουμπιά που βλέπετε σε άλλες φόρμες των Windows, συνήθως ως κουμπί "OK" ή "Cancel".

Κάντε κλικ στο εικονίδιο του κουμπιού εντολών στην εργαλειοθήκη. Αυτό είναι το δεύτερο εικονίδιο από αριστερά στην κάτω σειρά εικονιδίων. Δείτε την παραπάνω εικόνα. Έχει τα γράμματα ‘ab’.

Μπορείτε είτε να κρατήσετε πατημένο το κουμπί του ποντικιού σας και να σύρετε το χειριστήριο στη φόρμα σας, είτε να μετακινήσετε τον κέρσορα στη φόρμα, όπου θα αλλάξει σε δρομέα «σταυρού» και μπορείτε να τοποθετήσετε και να μεγεθύνετε το κουμπί σας

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

Η φόρμα σας θα μοιάζει τώρα με αυτήν:

Το κουμπί θα έχει προεπιλεγμένο κείμενο ως λεζάντα, αλλά θα θέλετε να το αλλάξετε στις δικές σας απαιτήσεις. Μπορείτε να κάνετε κλικ στο κείμενο μέσα στο κουμπί (‘CommandButton1’) και αυτό θα σας επιτρέψει να επεξεργαστείτε απευθείας τη λεζάντα.

Μπορείτε επίσης να το αλλάξετε στο παράθυρο ιδιοτήτων (κάτω αριστερή γωνία της οθόνης). Θα δείτε μια ιδιότητα που ονομάζεται "Λεζάντα" και μπορείτε να επεξεργαστείτε την τιμή για αυτό. Αλλάξτε το σε "Έξοδος"

Όπως και με τις ιδιότητες φόρμας, η ιδιότητα «Όνομα» ορίζει το όνομα που θα χρησιμοποιηθεί στον κωδικό VBA. Μπορεί να θέλετε να χρησιμοποιήσετε ένα όνομα που είναι πιο ουσιαστικό και προφανές μέσα στον κώδικά σας. Μπορείτε να το εισαγάγετε με την ιδιότητα "Όνομα".

Μπορείτε να επανατοποθετήσετε το κουμπί σύροντάς το στη φόρμα και μπορείτε να το αλλάξετε μέγεθος κάνοντας κλικ στις λαβές κουμπιών (λευκά τετράγωνα κουτάκια) και σύροντας τις λαβές για να το κάνετε μεγαλύτερο ή μικρότερο

Μπορείτε επίσης να αλλάξετε το μέγεθος του κουμπιού αλλάζοντας τις τιμές ightψος και Πλάτος στο παράθυρο ιδιοτήτων

Μπορείτε να δείτε τη φόρμα σας στο Excel κάνοντας κλικ στο πράσινο τρίγωνο στη γραμμή εργαλείων VBE ή πατώντας F5

Μπορείτε να καλέσετε τη φόρμα σας από κώδικα VBA μέσα σε μια ενότητα χρησιμοποιώντας τη μέθοδο "Εμφάνιση"

123 Sub ShowForm ()UserForm1.ShowΤέλος υπο

Η φόρμα χρήστη σας είναι ουσιαστικά ένα παγκόσμιο αντικείμενο και μπορεί να κληθεί από οπουδήποτε μέσα στον κώδικά σας

Προς το παρόν, το κουμπί εντολών δεν κάνει τίποτα επειδή δεν υπάρχει κώδικας VBA πίσω από αυτό. Πρέπει να το γράψετε μόνοι σας! Το μόνο που μπορεί να συμβεί αυτή τη στιγμή είναι ότι μπορείτε να κάνετε κλικ στο "Κλείσιμο" X στην επάνω δεξιά γωνία της φόρμας σας.

Για να προσθέσετε κώδικα VBA, κάντε διπλό κλικ στο κουμπί στη φόρμα

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

Χρησιμοποιείτε τη μέθοδο «Απόκρυψη» για να κλείσετε τη φόρμα και μπορείτε επίσης να προσθέσετε οποιονδήποτε άλλο κωδικό, όπως ένα πλαίσιο μηνυμάτων για να επιβεβαιώσετε στον χρήστη αυτό που έχει συμβεί.

Σημειώστε ότι το παράθυρο κώδικα έχει δύο αναπτυσσόμενα μενού στο επάνω μέρος. Το πρώτο σας επιτρέπει να επιλέξετε τα στοιχεία ελέγχου φόρμας και το δεύτερο εμφανίζει όλα τα συμβάντα που είναι διαθέσιμα για να προσθέσετε κώδικα. Το προφανές για ένα κουμπί είναι το συμβάν «Κλικ», αλλά υπάρχουν και άλλα όπως «Διπλό κλικ» ή «Μετακίνηση ποντικιού»

Όταν τρέχετε τη φόρμα σας τώρα, το κουμπί κάνει κάτι. Η φόρμα εξαφανίζεται και εμφανίζεται ένα πλαίσιο μηνύματος που επιβεβαιώνει ότι η φόρμα είναι κλειστή

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

Προσθήκη ετικέτας ελέγχου σε μια φόρμα

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

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

Για να προσθέσετε μια ετικέτα, κάντε κλικ στο εικονίδιο «Α» στην εργαλειοθήκη (επάνω σειρά, δεύτερη από αριστερά) και είτε κάντε διπλό κλικ σε αυτήν είτε μετακινήστε τον κέρσορα στη φόρμα και επιλέξτε θέση και μέγεθος.

Χρησιμοποιώντας την ιδιότητα "Caption" στο παράθυρο ιδιοτήτων ή κάνοντας κλικ στο στοιχείο ελέγχου ετικέτας, μπορείτε να εισαγάγετε το κείμενο για το στοιχείο ελέγχου ετικέτας.

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

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

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

Προσθήκη ελέγχου κειμένου στη φόρμα

Ένα στοιχείο ελέγχου κειμένου χρησιμοποιείται για να επιτρέψει στον χρήστη να εισάγει κείμενο, π.χ. εισαγωγή ονόματος ή σχολίων

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

Το στοιχείο ελέγχου κειμένου συχνά συγχέεται με το στοιχείο ελέγχου ετικέτας, αλλά το στοιχείο ελέγχου κειμένου είναι αυτό για την εισαγωγή χρήστη

Το κείμενο "Πληκτρολογήστε το όνομά σας" είναι ένα στοιχείο ελέγχου ετικέτας, όπως περιγράφηκε προηγουμένως, και έχουμε τώρα ένα λευκό πλαίσιο κειμένου έτοιμο για τον χρήστη να πληκτρολογήσει κάτι

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

Μια πολύ σημαντική ιδιότητα για ένα πλαίσιο κειμένου είναι η ιδιότητα "MultiLine". Εάν θέλετε ο χρήστης να εισάγει μεγάλη ποσότητα κειμένου στο στοιχείο ελέγχου κειμένου π.χ. σχόλια, τότε η ιδιότητα "MultiLine" πρέπει να οριστεί σε True.

Είναι μια προεπιλογή False που σημαίνει ότι όσο μεγάλο και αν κάνετε το πλαίσιο κειμένου, το κείμενο που εισάγεται θα παραμείνει σε μία συνεχή γραμμή και θα μετακινηθεί έξω από το πλαίσιο κειμένου. Δεν τυλίγεται μέσα στο κουτί.

Δεν υπάρχει αναδυόμενο παράθυρο όταν κάνετε δεξί κλικ στο πλαίσιο κειμένου όταν εκτελείται, αλλά το CTRL+V θα λειτουργήσει για την Επικόλληση και το CTRL+C θα λειτουργήσει για το Cut, εάν ο χρήστης θέλει να κόψει και να επικολλήσει κείμενο από και προς άλλα εφαρμογές

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

Μπορείτε να προσθέσετε αυτόν τον κωδικό στο συμβάν «Αλλαγή» για το πλαίσιο κειμένου

123 Private Sub TextBox1_Change ()Φύλλα ("Sheet1"). Εύρος ("A1"). Τιμή = TextBox1.ValueΤέλος υπο

Μπορεί επίσης να θέλετε να βάλετε κάποιο κωδικό επικύρωσης για να ελέγξετε ότι ο χρήστης δεν εισάγει σκουπίδια που θα έχουν καταστροφικές επιπτώσεις στην εφαρμογή σας

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

Χρησιμοποιείτε το συμβάν «Έξοδος». Αυτό ενεργοποιείται όταν ο χρήστης μεταφέρει την εστίαση σε άλλο στοιχείο ελέγχου στη φόρμα, πράγμα που σημαίνει ότι ο χρήστης δεν εισάγει πλέον δεδομένα.

123456 Private Sub TextBox1_Exit (ByVal Cancel As MSForms.ReturnBoolean)Εάν IsNull (TextBox1.Value) ή Len (TextBox1.Value) <4 ΤότεMsgBox "Το όνομα δεν είναι έγκυρο", vbCriticalTextBox1.SetFocusΤέλος εανΤέλος υπο

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

Σημειώστε ότι ακόμη και αν ο χρήστης κάνει κλικ στο κουμπί Έξοδος, το συμβάν εξόδου του πλαισίου κειμένου θα εκτελεστεί πρώτα, επομένως αυτό εμποδίζει την έξοδο του χρήστη χωρίς να διορθώσει την εισαγωγή

Αρχικοποίηση και ενεργοποίηση συμβάντων σε μια φόρμα

Όταν το VBA δημιουργεί και δημιουργεί μια φόρμα, ενεργοποιεί ένα συμβάν «Αρχικοποίηση». Ωστόσο, επειδή η φόρμα εμφανίζεται επίσης σε αυτό το σημείο, ενεργοποιεί επίσης ένα συμβάν "Ενεργοποίηση". Από εκεί και πέρα, κάθε φορά που η φόρμα εμφανίζεται χρησιμοποιώντας τη μέθοδο «Εμφάνιση» ή εμφανίζεται ως μέρος μιας ιεραρχίας μορφών, τότε ενεργοποιείται το συμβάν «Ενεργοποίηση», αλλά όχι το συμβάν «Αρχικοποίηση»

Το συμβάν «Αρχικοποίηση» συμβαίνει μόνο μία φορά, αλλά το συμβάν «Ενεργοποίηση» μπορεί να συμβεί πολλές φορές

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

12345678 Private Sub UserForm_Initialize ()TextBox1.Value = Φύλλα ("Φύλλο1"). Εύρος ("A1"). ΤιμήΕάν TextBox1.Value = ”” ΤότεTextBox1.Visible = ΛάθοςΑλλούTextBox1.Visible = TrueΤέλος εανΤέλος υπο

Μπορείτε να βρείτε το συμβάν «Αρχικοποίηση» στο δεύτερο αναπτυσσόμενο μενού στο παράθυρο κώδικα και το όνομα της μορφής χρήστη στο πρώτο αναπτυσσόμενο μενού.

Αυτός ο κωδικός θα χρησιμοποιήσει την τιμή στο κελί A1 στο «Φύλλο1» ως προεπιλεγμένη τιμή στο πλαίσιο κειμένου που δημιουργήθηκε νωρίτερα σε αυτό το άρθρο. Όταν εμφανιστεί η φόρμα για πρώτη φορά, θα εμφανιστεί η προεπιλεγμένη τιμή. Ο χρήστης μπορεί στη συνέχεια να αντικαταστήσει την προεπιλεγμένη τιμή και αυτή θα διατηρηθεί. Εάν το CellA1 είναι κενό, το πλαίσιο κειμένου θα είναι κρυφό, διαφορετικά θα είναι ορατό

Η προεπιλεγμένη τιμή θα μπορούσε επίσης να είναι σκληρά κωδικοποιημένη:

1 TextBox1.Value = "John Smith"

Μπορεί επίσης να θέλετε να βεβαιωθείτε ότι οι τιμές που έχει εισαγάγει ο χρήστης επανεμφανίζονται κάθε φορά που ο χρήστης ενεργοποιεί αυτήν τη φόρμα στη συγκεκριμένη περίοδο σύνδεσης του Excel. Ο κώδικας VBA μπορεί εύκολα να γράψει τις τιμές πίσω στα κελιά του βιβλίου εργασίας χρησιμοποιώντας το συμβάν «Έξοδος» σε ένα στοιχείο ελέγχου και να τις επαναφέρει χρησιμοποιώντας το συμβάν «Ενεργοποίηση» στη φόρμα

123 Private Sub TextBox1_Exit (ByVal Cancel as MSForms.ReturnBoolean)Φύλλα ("Sheet1"). Εύρος ("A10"). Τιμή = TextBox1.ValueΤέλος υπο
123 Private Sub UserForm_Activate ()TextBox1.Value = Φύλλα ("Sheet1"). Εύρος ("A10"). ΤιμήΤέλος υπο

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

Αποθήκευση της αίτησης και των εντύπων σας

Όταν αποθηκεύετε το βιβλίο εργασίας του Excel που περιέχει τις φόρμες σας, αποθηκεύονται επίσης όλες οι φόρμες και ο κωδικός VBA τους. Ωστόσο, τυχόν τιμές που διατηρούν οι φόρμες ενώ εμφανίζονται θα χαθούν.

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

Μορφές Modal και Non-Modal

Η ίδια η φόρμα έχει μια ιδιότητα "Show Modal". Αυτό έχει οριστεί από προεπιλογή σε True, αλλά μπορεί να αλλάξει σε False (non-modal)

Εάν μια φόρμα είναι modal, σημαίνει ότι δεν είναι δυνατή η πρόσβαση σε καμία από τις λειτουργίες του Excel ενώ εμφανίζεται η φόρμα. Αυτό περιλαμβάνει τον κωδικό σας στο παράθυρο VBE. Μπορείτε να δείτε τον κώδικα, αλλά ο δρομέας και το πληκτρολόγιο είναι απενεργοποιημένα.

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

Αυτό είναι σημαντικό από την άποψη του ελέγχου της συμπεριφοράς των χρηστών

Κλείσιμο φόρμας

Όσο καλά γράφετε τον κωδικό σας για να αναγκάσετε τον χρήστη να ακολουθήσει μια συγκεκριμένη διαδρομή, μπορεί εύκολα να τον παρακάμψει κάνοντας κλικ στο «Κλείσιμο» X στην επάνω δεξιά γωνία της φόρμας

Μπορείτε να αποτρέψετε αυτό να συμβεί τροποποιώντας το συμβάν «QueryClose» της φόρμας

1234 Private Sub UserForm_QueryClose (Ακύρωση ως ακέραιος, Κλείσιμο τρόπου ως ακέραιος)Ακύρωση = ΑλήθειαMsgBox "Αυτή η ενέργεια είναι απενεργοποιημένη"Τέλος υπο

Το συμβάν «QueryClose» ενεργοποιείται όταν ο χρήστης κάνει κλικ στο «Κλείσιμο» X της φόρμας. Αυτός ο κωδικός ακυρώνει τη δράση, οπότε ο χρήστης αναγκάζεται να χρησιμοποιήσει το κουμπί «Έξοδος» και τον κωδικό που έχετε πίσω από αυτό.

Ενεργοποίηση και απενεργοποίηση στοιχείων ελέγχου

Όλα τα στοιχεία ελέγχου στη φόρμα σας έχουν μια ιδιότητα που ονομάζεται "Ενεργοποιημένη" η οποία έχει οριστεί σε Σωστό ή Λάθος. Εάν είναι False, τότε το στοιχείο ελέγχου είναι γκριζωπό. Μπορεί να φανεί αλλά δεν μπορεί να χρησιμοποιηθεί.

Υπάρχει επίσης μια ιδιότητα που ονομάζεται «Ορατό», η οποία έχει οριστεί ξανά σε Σωστό ή Λάθος.

Μπορείτε να γράψετε κώδικα είτε για να καταστήσετε κάποιο στοιχείο ελέγχου άχρηστο είτε για να το κάνετε εντελώς αόρατο στον χρήστη. Χρησιμοποιώντας μια δήλωση "Εάν", μπορείτε να επιλέξετε τις συνθήκες όταν πρέπει να το κάνετε αυτό

Για παράδειγμα, μπορείτε να απενεργοποιήσετε το κουμπί "Έξοδος" αρχικά, έως ότου ο χρήστης εισαγάγει μια τιμή στο TextBox1 (όνομα)

123 Private Sub UserForm_Initialize ()CommandButton1.Enabled = ΛάθοςΤέλος υπο
1234567 Private Sub TextBox1_Change ()Εάν Len (TextBox1.Value)> 0 ΤότεCommandButton1.Enabled = TrueΑλλούCommandButton1.Enabled = ΛάθοςΤέλος εανΤέλος υπο

Αυτός ο κώδικας χρησιμοποιεί τη φόρμα "Εκκίνηση" για να απενεργοποιήσει το κουμπί εξόδου (Κουμπί εντολών 1) όταν εμφανιστεί αρχικά η φόρμα και στη συνέχεια χρησιμοποιεί το συμβάν "Αλλαγή" στο TextBox1 (όνομα) για να ενεργοποιήσει το κουμπί Έξοδος εάν κάτι έχει πληκτρολογηθεί ή απενεργοποιηθεί αν το κουτί είναι κενό.

Το συμβάν «Αλλαγή» ενεργοποιείται κάθε φορά που πληκτρολογείτε ή διαγράφετε έναν νέο χαρακτήρα από το πλαίσιο κειμένου. Εάν ο χρήστης προσπαθήσει να εισαγάγει κείμενο για να ενεργοποιήσει το κουμπί και στη συνέχεια διαγράψει όλο το κείμενο, το κουμπί θα απενεργοποιηθεί αμέσως

wave wave wave wave wave