Excel VBA MsgBox (Da / Ne)
U VBA- u pomoću okvira za poruke možemo stvoriti potvrdni okvir da ne koji se koristi za bilježenje korisničkog unosa na temelju klika na da ili ne, sintaksa za izradu okvira za poruku da ne slijedi varijabla = MsgBox („Tekst“, vbQuestion + vbYesNo + vbDefaultButton2, “Naslov okvira za poruke”) gdje varijabla mora biti deklarirana kao cijeli broj.
Često u VBA kodiranju moramo prikupiti ulazne vrijednosti od korisnika da bismo izvršili neke zadatke i jedan od takvih zadataka da bismo prikupili odgovor Da ili Ne od korisnika. Korištenjem VBA MsgBox metode Da Ne, možemo napisati kod da bismo nastavili dalje u kodu.
U određenim ćemo situacijama možda trebati pred korisnikom predstaviti opciju Da ili Ne na temelju tog odgovora. Zapravo možemo pokrenuti VBA kod.
Na primjer, pogledajte donju sliku MsgBox-a u VBA-u.

Ako korisnik kaže Da, „možemo napisati kôd za izvršenje određenog zadatka“, a ako korisnik kaže „Ne“, možemo napisati kôd za izvršavanje drugog skupa zadataka.
Kako raditi s MsgBoxom Da / Ne Odgovor?
Primjer # 1 - Kopiranje i lijepljenje na temelju odgovora
Na primjer, pogledajte donji kod.
Kodirati:
Sub MessageBox_Yes_NO_Example1 () Dim AnswerYes as string Dim AnswerNo As String AnswerYes = MsgBox ("Želite li kopirati?", VbQuestion + vbYesNo, "User Repsonse") If AnswerYes = vbYes then Range ("A1: A2"). ("C1") Ostali raspon ("A1: A2"). Raspon kopiranja ("E1") Kraj ako završi Sub

Obrazloženje:
Gore navedeno je varijablu proglasilo String tj
Prigušeni odgovorDa kao niz
U sljedećem smo retku dodijelili vrijednost putem okvira za poruku s pitanjem: "Želite li kopirati?".
AnswerYes = MsgBox ("Želite li kopirati?", VbQuestion + vbYesNo, "User Repsonse")
Sada izraz IF procjenjuje odgovor dat kroz okvir za poruke. Ako je rezultat okvira za poruke vbYes, tada će kopirati raspon A1 do A2 i zalijepiti u ćeliju C1.
Ako je odgovorDa = vbDa, tada opseg ("A1: A2"). Kopiraj raspon ("C1")
Ako je odgovor koji daje okvir za poruku Ne, on će kopirati raspon A1 do A2 i zalijepiti u ćeliju E1.
Else Range ("A1: A2"). Raspon kopiranja ("E1") End If
Ok, sad sam unio nekoliko vrijednosti u ćelije A1 i A2.

Sada ću pokrenuti kod pomoću tipke F5, ili će se kroz opciju pokretanja pojaviti okvir s porukom ispred mene i tražiti moj odgovor.

Ako kliknem na Yes, kopirat će raspon A1 do A2 i zalijepiti u ćeliju C1. Sada ću kliknuti na Yes i vidjeti rezultat.

Dakle, izvršilo je dodijeljeni zadatak ako je odgovor DA.
Sad ću opet pokrenuti kod.

Ovaj put ću odabrati Ne i vidjeti što će se dogoditi.

Da, izvršila je zadaću dodijeljenu u kodu, tj
Ostali raspon ("A1: A2"). Raspon kopiranja ("E1")
Primjer # 2 - Sakrij i otkrij listove na temelju odgovora
Kôd u nastavku sakrit će sve listove, osim aktivnog, ako je odgovor da.
Kodirati:
Sub HideAll () Zatamni odgovor kao niz Zatamni se kao radni list Odgovor = MsgBox ("Želite li sakriti sve?", VbQuestion + vbYesNo, "Hide") Ako je odgovor = vbYes onda za svaki Ws u ActiveWorkbook.Worksheets If Ws.Name ActiveSheet.Name Zatim Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Answer = vbNo Onda MsgBox "Odabrali ste da ne skrivate listove", vbInformation, "No Hide" End If End Sub
Gornji kod sakrit će sve radne listove, osim lista u kojem se trenutno nalazimo ako je odgovor iz okvira za poruku DA.

Ako je odgovor iz okvira za poruku NE, prikazat će se okvir s porukom: "Odabrali ste da ne skrivate listove."

Slično tome, donji kod će otkriti list ako je odgovor Da.
Kodirati:
Sub UnHideAll () Zatamni odgovor kao niz Zatamni se kao radni list Odgovor = MsgBox ("Želite li sve otkriti?", VbQuestion + vbYesNo, "Hide") Ako je odgovor = vbYes onda za svaki Ws u ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Answer = vbNo Onda MsgBox "Odabrali ste da se ne otkrivaju listovi", vbInformation, "No Hide" End If End Sub
Ovo djeluje potpuno isto kao i kod sakrivanja lista; ako da, otkrit će se. Ako ne, neće se otkriti.