VBA MsgBox (Oui / Non)

Excel VBA MsgBox (Oui / Non)

Dans VBA , en utilisant la boîte de message, nous pouvons créer une msgbox oui non qui est utilisée pour enregistrer les entrées de l'utilisateur en fonction du clic sur oui ou non, la syntaxe pour créer une boîte de message oui non est la suivante: variable = MsgBox ("Texte", vbQuestion + vbYesNo + vbDefaultButton2, «Message Box Title») où la variable doit être déclarée comme un entier.

Souvent, dans le codage VBA, nous devons collecter les valeurs d'entrée des utilisateurs pour effectuer une tâche et l'une de ces tâches pour collecter la réponse Oui ou Non des utilisateurs. En utilisant la méthode VBA MsgBox Oui Non, nous pouvons écrire le code pour continuer dans le code.

Dans certaines situations, nous pouvons avoir besoin de présenter l'option Oui ou Non devant l'utilisateur pour donner sa réponse et sur la base de cette réponse, nous pouvons réellement exécuter le code VBA.

Par exemple, regardez l'image ci-dessous de la MsgBox dans VBA.

Si l'utilisateur dit Oui «nous pouvons écrire du code pour effectuer une tâche spécifique» et si l'utilisateur dit «Non», nous pouvons écrire du code pour effectuer un autre ensemble de tâches.

Comment travailler avec MsgBox Oui / Non Réponse?

Vous pouvez télécharger ce modèle Excel de boîte de message VBA Oui ou Non ici - Modèle Excel de boîte de message VBA Oui ou Non

Exemple # 1 - Copier et coller en fonction de la réponse

Par exemple, regardez le code ci-dessous.

Code:

 Sub MessageBox_Yes_NO_Example1 () Dim AnswerYes As String Dim AnswerNo As String AnswerYes = MsgBox ("Voulez-vous copier?", VbQuestion + vbYesNo, "User Repsonse") If AnswerYes = vbYes Then Range ("A1: A2"). Copier la plage ("C1") Sinon plage ("A1: A2"). Copier plage ("E1") End If End Sub 

Explication:

Ce qui précède a déclaré la variable comme String ie

 Réponse faible Oui en tant que chaîne 

Dans la ligne suivante, nous avons attribué la valeur via une boîte de message demandant «Voulez-vous copier?».

AnswerYes = MsgBox ("Souhaitez-vous copier?", VbQuestion + vbYesNo, "User Repsonse")

L'instruction IF évalue maintenant la réponse donnée par la boîte de message. Si le résultat de la boîte de message est vbYes, il copiera la plage A1 à A2 et la collera dans la cellule C1.

   Si AnswerYes = vbYes Then Range ("A1: A2"). Copier la plage ("C1")

Si la réponse donnée par la boîte de message est Non, il copiera la plage A1 à A2 et la collera dans la cellule E1.

 Else Range ("A1: A2"). Copier la plage ("E1") End If 

Ok, j'ai entré quelques valeurs dans les cellules A1 et A2 maintenant.

Maintenant, je vais exécuter le code en utilisant la touche F5 ou via l'option d'exécution, une boîte de message apparaîtra devant moi et me demandera ma réponse.

Si je clique sur Oui, il copiera la plage A1 à A2 et la collera dans la cellule C1. Maintenant, je vais cliquer sur Oui et voir le résultat.

Donc, il a effectué la tâche assignée si la réponse est OUI.

Maintenant encore, je vais exécuter le code.

Cette fois, je vais sélectionner Non et voir ce qui se passe.

Oui, il a effectué la tâche assignée dans le code ie

 Autre plage ("A1: A2"). Copier la plage ("E1")

Exemple # 2 - Masquer et afficher les feuilles en fonction de la réponse

Le code ci-dessous masquera toutes les feuilles sauf la feuille active si la réponse est oui.

Code:

 Sub HideAll () Dim Answer As String Dim Ws As Worksheet Answer = MsgBox ("Souhaitez-vous tout masquer?", VbQuestion + vbYesNo, "Hide") If Answer = vbYes Then For Each Ws In ActiveWorkbook.Worksheets If Ws.Name ActiveSheet.Name Then Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Answer = vbNo Then MsgBox "Vous avez choisi de ne pas masquer les feuilles", vbInformation, "No Hide" End If End Sub 

Le code ci-dessus masquera toutes les feuilles de calcul sauf la feuille dans laquelle nous nous trouvons en ce moment si la réponse de la boîte de message est OUI.

Si la réponse de la boîte de message est NON, il affichera la boîte de message disant «Vous avez choisi de ne pas masquer les feuilles».

De même, le code ci-dessous affichera la feuille si la réponse est Oui.

Code:

 Sub UnHideAll () Dim Answer As String Dim Ws As Worksheet Answer = MsgBox ("Souhaitez-vous tout afficher?", VbQuestion + vbYesNo, "Hide") If Answer = vbYes Then For Each Ws In ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Answer = vbNo Then MsgBox "Vous avez choisi de ne pas afficher les feuilles", vbInformation, "No Hide" End If End Sub 

Cela fonctionne exactement de la même manière que le code de masquage de la feuille, si oui, il s'affichera, sinon, il ne s'affichera pas.