Excel VBA MsgBox (Ja / Nej)
I VBA , med hjälp av meddelandefältet, kan vi skapa ett ja-nej-meddelandefält som används för att spela in användarinmatning baserat på klicket på ja eller nej, syntaxen för att göra ett ja-nej-meddelanderuta är följande variabel = MsgBox (“Text” vbQuestion + vbYesNo + vbDefaultButton2, "Message Box Title") där variabeln måste deklareras som ett heltal.
Ofta i VBA-kodning måste vi samla inmatningsvärdena från användarna för att utföra vissa uppgifter och en av sådana uppgifter för att samla in svaret Ja eller Nej från användare. Genom att använda VBA MsgBox Yes No-metod kan vi skriva koden för att gå vidare i koden.
I vissa situationer kan vi behöva presentera ett Ja eller Nej-alternativ framför användaren för att ge sitt svar, och baserat på det svaret. Vi kan faktiskt köra VBA-koden.
Titta till exempel på bilden nedan av MsgBox i VBA.

Om användaren säger Ja, "kan vi skriva kod för att utföra en viss uppgift", och om användaren säger "Nej" kan vi skriva kod för att utföra en annan uppsättning uppgifter.
Hur arbetar jag med MsgBox Ja / Nej-svar?
Exempel nr 1 - Kopiera och klistra in baserat på svar
Titta till exempel på koden nedan.
Koda:
Sub MessageBox_Yes_NO_Example1 () Dim AnswerYes As String Dim AnswerNo As String AnswerYes = MsgBox ("Do You Wish to Copy?", VbQuestion + vbYesNo, "User Repsonse") If AnswerYes = vbYes Then Range ("A1: A2"). ("C1") Annat intervall ("A1: A2"). Kopieringsområde ("E1") Avsluta om slut Sub

Förklaring:
Ovanstående har förklarat variabeln som String dvs.
Svagt svar Ja som sträng
I nästa rad har vi tilldelat värdet genom en meddelandefält som frågar ”Vill du kopiera?”.
AnswerYes = MsgBox ("Vill du kopiera?", VbQuestion + vbYesNo, "User Repsonse")
Nu utvärderar IF-uttalandet svaret som ges via meddelandefältet. Om resultatet av meddelandefältet är vbYes kommer det att kopiera intervallet A1 till A2 och klistra in i cell C1.
Om AnswerYes = vbYes Then Range ("A1: A2"). Copy Range ("C1")
Om svaret från meddelandefältet är Nej, kommer det att kopiera intervallet A1 till A2 och klistra in i cell E1.
Annat intervall ("A1: A2"). Kopieringsområde ("E1") Slut om
Okej, jag har angett några värden i cell A1 och A2 nu.

Nu kommer jag att köra koden med F5-tangenten, eller genom att köra alternativet, en meddelandefält visas framför mig och ber om mitt svar.

Om jag klickar på Ja, kommer det att kopiera intervallet A1 till A2 och klistra in i C1-cellen. Nu klickar jag på Ja och ser resultatet.

Så det har utfört den tilldelade uppgiften om svaret är JA.
Nu ska jag köra koden igen.

Den här gången väljer jag Nej och ser vad som händer.

Ja, det utförde uppgiften som tilldelats i koden, dvs.
Annat intervall ("A1: A2"). Kopieringsområde ("E1")
Exempel # 2 - Dölj och dölj ark baserat på svaret
Koden nedan döljer alla ark utom det aktiva arket om svaret är ja.
Koda:
Sub HideAll () Dim Answer as String Dim Ws As Worksheet Answer = MsgBox ("Vill du dölja alla?", VbQuestion + vbYesNee, "Hide") If Answer = vbYes Then for each Ws in ActiveWorkbook.Worksheets If Ws.Name ActiveSheet.Name Då Ws.Visible = xlSheetVeryHidden Nästa Ws ElseIf Answer = vbNo Då MsgBox "Du har valt att inte dölja arken", vbInformation, "No Hide" Avsluta om End Sub
Ovanstående kod döljer alla kalkylblad utom det ark vi befinner oss i just nu om svaret från meddelandefältet är JA.

Om svaret från meddelandefältet är NEJ, visas meddelandefältet med texten "Du har valt att inte dölja arken."

På samma sätt kommer koden nedan att dölja arket om svaret är Ja.
Koda:
Sub UnHideAll () Dim Answer As String Dim Ws As Worksheet Answer = MsgBox ("Do You Wish to Unhide All?", VbQuestion + vbYesNee, "Hide") If Answer = vbYes Then for each Ws in ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Nästa Ws ElseIf Answer = vbNo Då MsgBox "Du har valt att inte dölja bladen", vbInformation, "No Hide" Avsluta om End Sub
Detta fungerar exakt på samma sätt som döljarkkoden; om ja, kommer det att avslöjas. Om nej, visar det sig inte.