VBA MsgBox (ja / nee)

Excel VBA MsgBox (ja / nee)

In VBA kunnen we met behulp van het berichtvenster een ja-nee-berichtenbox maken die wordt gebruikt om gebruikersinvoer op te nemen op basis van de klik op ja of nee, de syntaxis om een ​​ja-nee-berichtvenster te maken is als volgt: variabele = MsgBox ("Tekst", vbQuestion + vbYesNo + vbDefaultButton2, "Message Box Title") waarbij variabele moet worden gedeclareerd als een geheel getal.

Vaak moeten we bij VBA-codering de invoerwaarden van de gebruikers verzamelen om een ​​taak uit te voeren en een van die taken om het Ja of Nee antwoord van gebruikers te verzamelen. Door de VBA MsgBox Yes No-methode te gebruiken, kunnen we de code schrijven om verder te gaan in de code.

In bepaalde situaties moeten we mogelijk de optie Ja of Nee aan de gebruiker presenteren om hun antwoord te geven en op basis van dat antwoord kunnen we de VBA-code daadwerkelijk uitvoeren.

Kijk bijvoorbeeld naar de onderstaande afbeelding van de MsgBox in VBA.

Als de gebruiker Ja zegt "kunnen we code schrijven om een ​​specifieke taak uit te voeren" en als de gebruiker "Nee" zegt, kunnen we code schrijven om een ​​andere reeks taken uit te voeren.

Hoe te werken met MsgBox Ja / geen reactie?

U kunt dit VBA-berichtenvak Ja of Nee Excel-sjabloon hier downloaden - VBA-berichtenvak Ja of Nee Excel-sjabloon

Voorbeeld # 1 - Kopiëren en plakken op basis van antwoord

Kijk bijvoorbeeld naar de onderstaande code.

Code:

 Sub MessageBox_Yes_NO_Example1 () Dim AnswerYes As String Dim AnswerNo As String AnswerYes = MsgBox ("Wilt u kopiëren?", VbQuestion + vbYesNo, "User Repsonse") If AnswerYes = vbYes Then Range ("A1: A2"). Bereik kopiëren ("C1") Else Bereik ("A1: A2"). Kopieerbereik ("E1") End If End Sub 

Uitleg:

Het bovenstaande heeft de variabele verklaard als String, dwz

 Vaag antwoord Ja als string 

In de volgende regel hebben we de waarde toegewezen via een berichtvenster met de vraag "Wilt u kopiëren?".

AnswerYes = MsgBox ("Wilt u kopiëren?", VbQuestion + vbYesNo, "User Repsonse")

Nu evalueert de IF-instructie het antwoord dat via het berichtvenster wordt gegeven. Als het resultaat van het berichtvak vbYes is, wordt het bereik A1 naar A2 gekopieerd en in cel C1 geplakt.

   If AnswerYes = vbYes Then Range ("A1: A2"). Kopieerbereik ("C1")

Als het antwoord van het berichtvenster Nee is, wordt het bereik A1 naar A2 gekopieerd en in cel E1 geplakt.

 Else Bereik ("A1: A2"). Kopieerbereik ("E1") End If 

Oké, ik heb nu een paar waarden ingevoerd in cel A1 en A2.

Nu zal ik de code uitvoeren met behulp van de F5-toets of via de optie Uitvoeren, een berichtvenster verschijnt voor me en vraagt ​​om mijn antwoord.

Als ik op Ja klik, wordt het bereik A1 naar A2 gekopieerd en in cel C1 geplakt. Nu zal ik op Ja klikken en het resultaat zien.

Het heeft dus de toegewezen taak uitgevoerd als het antwoord JA is.

Nu zal ik de code opnieuw uitvoeren.

Deze keer selecteer ik Nee en kijk wat er gebeurt.

Ja, het heeft de taak uitgevoerd die in de code is toegewezen, dwz

 Else Range ("A1: A2"). Copy Range ("E1")

Voorbeeld 2 - Bladen verbergen en zichtbaar maken op basis van het antwoord

Onderstaande code verbergt alle bladen behalve het actieve blad als het antwoord ja is.

Code:

 Sub HideAll () Dim Answer As String Dim Ws As Worksheet Answer = MsgBox ("Wilt u alles verbergen?", VbQuestion + vbYesNo, "Hide") If Answer = vbYes Then for each Ws in ActiveWorkbook.Worksheets If Ws.Name ActiveSheet.Name Then Ws.Visible = xlSheetVeryHidden Volgende Ws ElseIf Answer = vbNo Then MsgBox "U heeft ervoor gekozen om de bladen niet te verbergen", vbInformation, "No Hide" End If End Sub 

De bovenstaande code verbergt alle werkbladen behalve het blad waarin we ons nu bevinden als het antwoord van het berichtvenster JA is.

Als het antwoord van het berichtvenster NEE is, wordt het berichtvenster weergegeven met de tekst "U hebt ervoor gekozen de bladen niet te verbergen".

Evenzo zal onderstaande code het blad zichtbaar maken als het antwoord Ja is.

Code:

 Sub UnHideAll () Dim Answer As String Dim Ws As Worksheet Answer = MsgBox ("Wilt u alles zichtbaar maken?", VbQuestion + vbYesNo, "Hide") If Answer = vbYes Then for each Ws in ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Answer = vbNo Then MsgBox "U hebt ervoor gekozen de bladen niet zichtbaar te maken", vbInformation, "No Hide" End If End Sub 

Dit werkt precies hetzelfde als de code voor het verbergen van het blad, zo ja, dan wordt het zichtbaar, zo nee, wordt het niet zichtbaar.