VBA MsgBox Ναι / Όχι | Πώς να δημιουργήσετε απάντηση Ναι / Όχι;

Excel VBA MsgBox (Ναι / Όχι)

Στο VBA , χρησιμοποιώντας το πλαίσιο μηνυμάτων μπορούμε να δημιουργήσουμε ένα μήνυμα γραφής ναι όχι που χρησιμοποιείται για την καταγραφή εισόδου χρήστη βάσει του κλικ στο ναι ή όχι, η σύνταξη για να δημιουργήσετε ένα πλαίσιο μηνύματος ναι όχι έχει ως εξής μεταβλητή = MsgBox ("Κείμενο", vbQuestion + vbYesNo + vbDefaultButton2, "Τίτλος πλαισίου μηνύματος") όπου η μεταβλητή πρέπει να δηλωθεί ως ακέραιος.

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

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

Για παράδειγμα, δείτε την παρακάτω εικόνα του MsgBox στο VBA.

Εάν ο χρήστης λέει Ναι "μπορούμε να γράψουμε κώδικα για να εκτελέσουμε συγκεκριμένη εργασία" και αν ο χρήστης λέει "Όχι" μπορούμε να γράψουμε κώδικα για να εκτελέσουμε ένα άλλο σύνολο εργασιών.

Πώς να εργαστείτε με το MsgBox Ναι / Όχι απάντηση;

Μπορείτε να πραγματοποιήσετε λήψη αυτού του προτύπου πλαισίου μηνύματος Ναι ή Όχι Excel - Πλαίσιο μηνυμάτων VBA Ναι ή Όχι Πρότυπο Excel

Παράδειγμα # 1 - Αντιγραφή και επικόλληση με βάση την απόκριση

Για παράδειγμα, δείτε τον παρακάτω κώδικα.

Κώδικας:

 Sub MessageBox_Yes_NO_Example1 () Dim AnswerYes As String Dim AnswerNo As String AnswerYes = MsgBox ("Θέλετε να αντιγράψετε;", vbQuestion + vbYesNo, "User Repsonse") If AnswerYes = vbΝαι τότε Εύρος αντιγραφής ("A1: A2"). ("C1") Else Range ("A1: A2"). Copy Range ("E1") End if End Sub 

Εξήγηση:

Τα παραπάνω έχουν δηλώσει τη μεταβλητή ως String δηλαδή

 Dim Απάντηση: Ναι ως συμβολοσειρά 

Στην επόμενη γραμμή, έχουμε αντιστοιχίσει την τιμή μέσω του πλαισίου μηνυμάτων που ρωτάει "Θέλετε να αντιγράψετε;".

AnswerYes = MsgBox ("Θέλετε να αντιγράψετε;", vbQuestion + vbYesNo, "User Repsonse")

Τώρα η δήλωση IF αξιολογεί την απάντηση που δίνεται μέσω του πλαισίου μηνυμάτων. Εάν το αποτέλεσμα του πλαισίου μηνυμάτων είναι vbΝαι τότε θα αντιγράψει το εύρος A1 έως A2 και θα επικολλήσει στο κελί C1.

   Εάν ΑπάντησηΝαι = vbΝαι, τότε Εύρος ("A1: A2"). Εύρος αντιγραφής ("C1")

Εάν η απάντηση που δίνεται από το πλαίσιο μηνύματος είναι Όχι, τότε θα αντιγράψει το εύρος A1 έως A2 και θα επικολλήσει στο κελί E1.

 Εύρος αλλιώς ("A1: A2"). Εύρος αντιγραφής ("E1") Λήξη Εάν 

Εντάξει, έχω εισαγάγει μερικές τιμές στα κελιά A1 και A2 τώρα.

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

Εάν κάνω κλικ στο Ναι, θα αντιγράψει το εύρος A1 έως A2 και θα επικολλήσει στο κελί C1. Τώρα θα κάνω κλικ στο Ναι και θα δω το αποτέλεσμα.

Έτσι έχει εκτελέσει την εργασία που έχει ανατεθεί εάν η απάντηση είναι ΝΑΙ.

Τώρα πάλι θα τρέξω τον κωδικό.

Αυτή τη φορά θα επιλέξω Όχι και θα δω τι θα συμβεί.

Ναι, εκτελούσε την εργασία που ανατέθηκε στον κώδικα δηλ

 Else Range ("A1: A2"). Εύρος αντιγραφής ("E1")

Παράδειγμα # 2 - Απόκρυψη & απόκρυψη φύλλων με βάση την απόκριση

Ο παρακάτω κώδικας θα κρύψει όλα τα φύλλα εκτός από το ενεργό φύλλο εάν η απάντηση είναι ναι.

Κώδικας:

 Sub HideAll () Dim Απάντηση ως συμβολοσειρά Dim Ws ως φύλλο εργασίας Απάντηση = MsgBox ("Θέλετε να αποκρύψετε όλα;", vbQuestion + vbYesNo, "Απόκρυψη") Εάν Απάντηση = vbΝαι τότε για κάθε Ws στο ActiveWorkbook. Φύλλα εργασίας εάν Ws.Name ActiveSheet.Name Then Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Απάντηση = vbΌχι Στη συνέχεια MsgBox "Έχετε επιλέξει να μην αποκρύψετε τα φύλλα", vbInformation, "No Hide" End if End Sub 

Ο παραπάνω κώδικας θα κρύψει όλα τα φύλλα εργασίας εκτός από το φύλλο στο οποίο βρισκόμαστε τώρα, εάν η απάντηση από το πλαίσιο μηνύματος είναι ΝΑΙ.

Εάν η απάντηση από το πλαίσιο μηνυμάτων είναι ΟΧΙ, θα εμφανιστεί το πλαίσιο μηνύματος με την ένδειξη "Έχετε επιλέξει να μην κρύψετε τα φύλλα".

Ομοίως, ο παρακάτω κώδικας θα εμφανίσει το φύλλο εάν η απάντηση είναι Ναι.

Κώδικας:

 Sub UnHideAll () Dim Απάντηση ως συμβολοσειρά Dim Ws ως φύλλο εργασίας Απάντηση = MsgBox ("Θέλετε να αποκρύψετε όλα;", vbQuestion + vbYesNo, "Hide") Εάν Απάντηση = vbΝαι τότε για κάθε Ws στο ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Απάντηση = vbΌχι Στη συνέχεια MsgBox "Έχετε επιλέξει να μην αποκρύψετε τα φύλλα", vbInformation, "No Hide" End if End Sub 

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