Πιθανότατα είστε εξοικειωμένοι με τη λειτουργία VBA MsgBox. Η συνάρτηση MsgBox, η οποία δέχεται τα ορίσματα που φαίνονται παρακάτω, είναι χρήσιμη για την εμφάνιση πληροφοριών και τη λήψη απλών εισαγωγών από τον χρήστη. Είναι σε θέση να λάβει στοιχεία από τον χρήστη επειδή είναι μια συνάρτηση. Μια συνάρτηση, όπως πιθανώς γνωρίζετε, επιστρέφει μια τιμή. Στην περίπτωση της συνάρτησης MsgBox, χρησιμοποιεί ένα πλαίσιο διαλόγου για να πάρει την τιμή που επιστρέφει. Συνεχίστε να διαβάζετε για να δείτε πώς ακριβώς λειτουργεί.
Διαφωνία |
Τι επηρεάζει |
Προτροπή |
Το κείμενο Excel εμφανίζεται στο πλαίσιο μηνύματος |
Κουμπιά |
Ένας αριθμός που καθορίζει ποια κουμπιά (μαζί με ποιο εικονίδιο)
εμφανίζονται στο πλαίσιο μηνύματος (προαιρετικό) |
Τίτλος |
Το κείμενο που εμφανίζεται στη γραμμή τίτλου του πλαισίου μηνύματος
(προαιρετικό) |
Ακολουθεί μια απλοποιημένη έκδοση της σύνταξης της συνάρτησης MsgBox:
MsgBox(προτροπή[, κουμπιά][, τίτλος])
Εμφάνιση απλού πλαισίου μηνύματος
Μπορείτε να χρησιμοποιήσετε τη συνάρτηση MsgBox με δύο τρόπους:
-
Για να εμφανίσετε απλώς ένα μήνυμα στον χρήστη: Σε αυτήν την περίπτωση, δεν σας ενδιαφέρει το αποτέλεσμα που επιστρέφει η συνάρτηση.
-
Για να λάβετε απάντηση από τον χρήστη: Σε αυτήν την περίπτωση, σας ενδιαφέρει το αποτέλεσμα που επιστρέφει η συνάρτηση. Το αποτέλεσμα εξαρτάται από το κουμπί που κάνει κλικ ο χρήστης.
Εάν χρησιμοποιείτε τη συνάρτηση MsgBox από μόνη της, μην συμπεριλάβετε παρενθέσεις γύρω από τα ορίσματα. Το παρακάτω παράδειγμα απλώς εμφανίζει ένα μήνυμα και δεν επιστρέφει αποτέλεσμα. Όταν εμφανιστεί το μήνυμα, ο κωδικός σταματά μέχρι ο χρήστης να κάνει κλικ στο OK.
Sub MsgBoxDemo()
MsgBox "Κάντε κλικ στο OK για να ξεκινήσει η εκτύπωση."
Φύλλα ("Αποτελέσματα"). Εκτύπωση
End Sub
Κοιτάξτε παρακάτω για να δείτε πώς φαίνεται αυτό το πλαίσιο μηνύματος. Σε αυτήν την περίπτωση, η εκτύπωση ξεκινά όταν ο χρήστης κάνει κλικ στο OK. Παρατηρείτε ότι δεν υπάρχει τρόπος να ακυρώσετε την εκτύπωση; Συνεχίστε να διαβάζετε για να μάθετε πώς να το διορθώσετε.
Ένα απλό πλαίσιο μηνυμάτων.
Λήψη απάντησης από ένα πλαίσιο μηνυμάτων
Εάν εμφανίσετε ένα πλαίσιο μηνύματος που περιέχει περισσότερα από ένα κουμπί OK, πιθανότατα θα θέλετε να μάθετε σε ποιο κουμπί κάνει κλικ ο χρήστης. Είσαι τυχερός. Η συνάρτηση MsgBox μπορεί να επιστρέψει μια τιμή που αντιπροσωπεύει το κουμπί που κάνετε κλικ. Μπορείτε να αντιστοιχίσετε το αποτέλεσμα της συνάρτησης MsgBox σε μια μεταβλητή.
Στον παρακάτω κώδικα, χρησιμοποιούνται ορισμένες ενσωματωμένες σταθερές που διευκολύνουν την εργασία με τις τιμές που επιστρέφονται από το MsgBox:
Sub GetAnswer()
Dim Ans As Long
Ans = MsgBox ("Έναρξη εκτύπωσης;", vbΝαιΌχι)
Επιλέξτε Case Ans
Υπόθεση vbYes
ActiveSheet.PrintOut
Υπόθεση vbNo
MsgBox "Η εκτύπωση ακυρώθηκε"
Τέλος Επιλογή
End Sub
Συνεχής |
αξία |
Τι κάνει |
vbOKOnly |
0 |
Εμφανίζει μόνο το κουμπί ΟΚ. |
vbOKΑκύρωση |
1 |
Εμφανίζει τα κουμπιά OK και Cancel. |
vbAbortRetryIgnore |
2 |
Εμφανίζει τα κουμπιά Abort, Retry και Ignore. |
vbΝαιΌχι Ακύρωση |
3 |
Εμφανίζει τα κουμπιά Ναι, Όχι και Ακύρωση. |
vbΝαι Όχι |
4 |
Εμφανίζει τα κουμπιά Ναι και Όχι. |
vbRetryΑκύρωση |
5 |
Εμφανίζει τα κουμπιά Επανάληψη και Ακύρωση. |
vbCritical |
16 |
Εμφανίζει το εικονίδιο κρίσιμου μηνύματος. |
vbΕρώτηση |
32 |
Εμφανίζει το εικονίδιο ερωτήματος προειδοποίησης. |
vb Θαυμαστικό |
48 |
Εμφανίζει το εικονίδιο προειδοποιητικού μηνύματος. |
vbΠληροφορίες |
64 |
Εμφανίζει το εικονίδιο του μηνύματος πληροφοριών. |
vbDefaultButton1 |
0 |
Το πρώτο κουμπί είναι προεπιλεγμένο. |
vbDefaultButton2 |
256 |
Το δεύτερο κουμπί είναι προεπιλεγμένο. |
vbDefaultButton3 |
512 |
Το τρίτο κουμπί είναι προεπιλεγμένο. |
vbDefaultButton4 |
768 |
Το τέταρτο κουμπί είναι προεπιλεγμένο. |
Δείτε πώς φαίνεται. Όταν εκτελείτε αυτήν τη διαδικασία, στη μεταβλητή Ans εκχωρείται μια τιμή είτε vbYes είτε vbNo, ανάλογα με το κουμπί που κάνει κλικ ο χρήστης. Η δήλωση Select Case χρησιμοποιεί την τιμή Ans για να καθορίσει ποια ενέργεια πρέπει να εκτελέσει ο κώδικας.
Ένα απλό πλαίσιο μηνυμάτων, με δύο κουμπιά.
Μπορείτε επίσης να χρησιμοποιήσετε το αποτέλεσμα της συνάρτησης MsgBox χωρίς να χρησιμοποιήσετε μεταβλητή, όπως δείχνει το ακόλουθο παράδειγμα:
Sub GetAnswer2()
Αν MsgBox("Έναρξη εκτύπωσης;", vbYesNo) = vbYes Τότε
' ...[κωδικός εάν γίνει κλικ στο Ναι]…
Αλλού
« ...[κωδικός εάν δεν γίνει κλικ στο Ναι]…
Τέλος εαν
End Sub