VBA MsgBox Jah / Ei - Kuidas luua jah / ei vastust?

Lang L: none (table-of-contents)

Exceli VBA MsgBox (jah / ei)

In VBA , kasutades kirjakasti saame luua jah ei msgbox mida kasutatakse rekord kasutaja sisend põhineb kliki jah või ei, süntaksi teha jah ei kirjakasti on järgmine muutuja = MsgBox ( "Tekst", vbQuestion + vbYesNo + vbDefaultButton2, “Sõnumikasti pealkiri”), kus muutuja tuleb deklareerida täisarvuna.

Sageli peame VBA-kodeerimisel koguma kasutajatelt sisendväärtusi, et nad saaksid täita mõnda ülesannet, ja ühte sellistest ülesannetest, et koguda kasutajatelt jah või ei. Kasutades meetodit VBA MsgBox Yes No, saame koodi kirjutada, et koodis edasi minna.

Teatud olukordades peame võib-olla vastuse andmiseks esitama kasutaja ees Jah või Ei võimaluse. Me saame tegelikult käitada VBA koodi.

Näiteks vaadake VBA-s allolevat MsgBoxi pilti.

Kui kasutaja ütleb Jah, „saame konkreetse ülesande täitmiseks koodi kirjutada” ja kui kasutaja ütleb „Ei”, võime koodi kirjutada teise ülesannete komplekti täitmiseks.

Kuidas töötada MsgBoxiga jah / ei vastus?

Näide # 1 - kopeerimine ja kleepimine vastuse põhjal

Näiteks vaadake allolevat koodi.

Kood:

Sub MessageBox_Yes_NO_Example1 () Hämarda AnswerYes stringina Dim AnswerNo As String AnswerYes = MsgBox ("Kas soovite kopeerida?", VbQuestion + vbYesNo, "User Repsonse") Kui AnswerYes = vbYes Siis Range ("A1: A2"). Kopeeri ("C1") muu vahemik ("A1: A2"). Kopeerimisvahemik ("E1") lõpeb, kui lõpeb alam

Selgitus:

Eeltoodu on muutuja deklareerinud stringiks st

Hämar vastus: Jah stringina

Järgmisel real oleme väärtuse määranud sõnumikasti kaudu, küsides: "Kas soovite kopeerida?"

AnswerYes = MsgBox ("Kas soovite kopeerida?", VbQuestion + vbYesNo, "Kasutaja vastus")

Nüüd hindab IF-lause sõnumikasti kaudu antud vastust. Kui sõnumikasti tulemus on vbYes , kopeerib see vahemiku A1 kuni A2 ja kleebib lahtrisse C1.

 Kui AnswerYes = vbYes, siis vahemik ("A1: A2"). Kopeeri vahemik ("C1")

Kui sõnumikasti vastus on Ei, kopeerib see vahemiku A1 kuni A2 ja kleebib lahtrisse E1.

Muu vahemik ("A1: A2"). Kopeerimisvahemik ("E1") lõpeb, kui

Ok, olen nüüd lahtritesse A1 ja A2 sisestanud vähe väärtusi.

Nüüd käivitan koodi kasutades klahvi F5 või käivitamisvaliku kaudu ilmub minu ette sõnumikast ja küsib minu vastust.

Kui klõpsan nupul Jah, kopeerib see vahemiku A1 kuni A2 ja kleebib lahtrisse C1. Nüüd klõpsan Jah ja näen tulemust.

Nii et see on määratud ülesande täitnud, kui vastus on JAH.

Nüüd jällegi käivitan koodi.

Seekord valin Ei ja vaatan, mis juhtub.

Jah, see täitis koodis määratud ülesande st

Muu vahemik ("A1: A2"). Kopeerimisvahemik ("E1")

Näide # 2 - vastuste põhjal peida ja peida lehed

Alljärgnev kood peidab kõik lehed, välja arvatud aktiivne leht, kui vastus on jaatav.

Kood:

Sub HideAll () Hämar vastus stringina Dim Ws töölehe vastusena = MsgBox ("Kas soovite kõiki peita?", VbQuestion + vbYesNo, "Peida") Kui Answer = vbYes, siis iga W kohta ActiveWorkbookis. Töölehed Kui Ws.Name ActiveSheet.Name Siis Ws.Visible = xlSheetVeryHidden Järgmine Ws ElseIf Answer = vbNo Siis MsgBox "Valisite, et lehti ei peita", vbInformation, "Peida pole" Lõpeta, kui lõpp alam

Ülaltoodud kood peidab kõik töölehed, välja arvatud leht, kus me praegu asume, kui vastus sõnumikastilt on JAH.

Kui sõnumikasti vastus on EI, kuvatakse selles sõnumikast: „Olete valinud lehti mitte peita.”

Samamoodi peidab järgmine kood lehte, kui vastus on Jah.

Kood:

Sub UnHideAll () Hämar vastus stringina Dim Ws töölehe vastusena = MsgBox ("Kas soovite kõik varjata?", VbQuestion + vbYesNo, "Peida") Kui Answer = vbYes, siis iga W kohta ActiveWorkbookis. Töötoolid Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Answer = vbNo Siis MsgBox "Olete valinud, et lehte ei peideta", vbInformation, "Peida pole" Lõpeta, kui lõpp alam

See töötab täpselt samamoodi nagu peida lehe kood; kui jah, siis see peidetakse. Kui ei, siis see ei avane.

Huvitavad Artiklid...