VBA MsgBox Ja / Nee - Hoe maak je een ja / nee-antwoord?

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 sommige taken uit te voeren en een van dergelijke 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 een Ja of Nee-optie presenteren aan de gebruiker om hun antwoord te geven, en op basis van dat antwoord. We kunnen 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?

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

Dim 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, verschijnt er een berichtvenster 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 nogmaals, ik zal de code 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

De 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 hebt ervoor gekozen 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 de 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 blad; zo ja, dan wordt het zichtbaar. Zo nee, dan wordt het niet zichtbaar.

Interessante artikelen...