Ovaj vodič će pokriti kako koristiti funkciju VBA MsgBox za prikaz okvira za poruke korisnicima (uključujući YesNo Messagebox). Možda će vas zanimati i naš članak o InputBoxima.
VBA MsgBox funkcija
U VBA -u je jednostavno prikazati jednostavan MsgBox:
1 | MsgBox "Ovo je okvir za poruke" |
Međutim, možete učiniti puno više od prikaza jednostavnog okvira s porukom OK. Pogledajmo brzo komplicirani primjer prije nego što uđemo u pojedinosti …
VBA DaNe Okvir za poruke
U nastavku ćemo stvoriti okvir za poruke sa:
- Naslov "Naslov okvira s porukama" i upit "Tekst"
- Ikona upitnika
- Da / Ne opcije umjesto jednostavnog "OK"
- Zadani gumb = "Ne"
123 | Zatamnjen odgovor Kao cijeli brojanswer = MsgBox ("Tekst", vbQuestion + vbDaNe + vbDefaultButton2, "Naslov okvira s porukama") |
Okvir za poruke vratit će vbYes ili vbNo, ovisno o izboru korisnika. Zatim možete izvršiti različite radnje ovisno o izboru:
12345 | Ako je odgovor = vbDaMsgBox "Da"DrugoMsgBox "Ne"Završi ako |
U sljedećem odjeljku pokazat ćemo vam sve opcije koje su vam dostupne pri stvaranju okvira s porukama. Zatim ćemo vas upoznati sa sintaksom funkcije MsgBox i na kraju pregledati ostale primjere okvira s porukama.
Opcije okvira za poruke VBA
Pogledajte donju sliku. Ovdje ćete vidjeti (gotovo) sve opcije koje su vam dostupne pri stvaranju okvira s porukama. Obratite pažnju na ikone i različite gumbe.
Ovo je snimak zaslona “MessageBox Builder” iz našeg Premium VBA dodatka: AutoMacro. MessageBox Builder omogućuje vam da brzo dizajnirate željeni okvir za poruke i umetnete kôd u svoj kodni modul. Sadrži i mnoge druge graditelje kodova, opsežnu biblioteku kodova VBA i niz alata za kodiranje. To mora imati svaki VBA programer.
Sintaksa funkcije MsgBox
MsgBox (upit [, gumbi] [, naslov] [, datoteka pomoći, kontekst])
prompt (obavezno) - Ovo je primarni tekst okvira poruka.
gumbi - Odaberite gumbe za prikaz. Ako je izostavljeno, 'U redu'. Ovdje također možete odrediti koju ikonu želite prikazati i zadani gumb.
titula - Naslov pri vrhu okvira s porukom. Ako je izostavljeno, prikazuje se naziv trenutne aplikacije (npr. Microsoft Excel).
datoteka pomoći - Odredite datoteku pomoći kojoj se može pristupiti kada korisnik klikne gumb ‘Pomoć’. Ako je navedeno, tada morate dodati i kontekst (ispod)
kontekst - Numerički izraz koji predstavlja broj konteksta pomoći dodijeljen odgovarajućoj temi pomoći.
Vjerojatno možete zanemariti datoteku pomoći i argumente konteksta. Nikada ih nisam vidio da se koriste.
Prilagodite naslov okvira i okvir okvira za poruke
Funkcija MsgBox omogućuje vam da prilagodite naslov i poruke upita na sljedeći način:
1 | Msgbox "Odziv" ,, "Naslov" |
Još jedan primjer:
123 | Pod MsgBoxPromptTitle ()MsgBox "Korak 1 dovršen. Pritisnite U redu da biste pokrenuli korak 2." ,, "Korak 1 od 5"Kraj podm |
Važno! Morate zapamtiti da svoj tekst okružite citatima.
MessageBox LineBreaks
Također možete dodati prijelome redaka u upite u okvir s porukom s "vbNewLine".
123 | Pod MsgBoxPromptTitle_NewLine ()MsgBox "Korak 1 dovršen." & vbNewLine & "Pritisnite U redu za pokretanje 2. koraka", "Korak 1 od 5"Kraj podm |
Primijetite da koristimo simbol & za spajanje teksta. Više o korištenju & s tekstom i drugim opcijama za umetanje prijeloma reda možete saznati u našem članku o spajanju teksta.
Ikone MsgBox
VBA vam omogućuje da dodate jednu od četiri unaprijed izgrađene ikone u svoje okvire za poruke:
Ikona Konstant | Ikona |
---|---|
vbInformation | ![]() |
vbCritical | ![]() |
vbQuestion | ![]() |
vbUzvik | ![]() |
Konstantnu ikonu treba staviti unutar argumenta gumba:
123 | Sub MsgBoxQuestionIcon ()MsgBox "Primjer pitanja", vbQuestionKraj podm |
Ovo će generirati zadani okvir s porukom "U redu" s ikonom pitanja:
Primijetite kako će vam VBA Editor prilikom pisanja pokazati opcije koje su vam dostupne:
Ovo je korisno jer se ne morate sjećati točne sintakse ili naziva ikona ili gumba.
Sada ćemo demonstrirati svaku ikonu okvira za poruke:
Ikone MsgBox - Informacije
123 | Sub MsgBoxInformationIcon ()MsgBox "Primjer informacija", vbInformationKraj podm |
Ikone MsgBox - kritične
123 | Sub MsgBoxCriticalIcon ()MsgBox "Kritični primjer", vbCriticalKraj podm |
Ikone MsgBox - Pitanje
123 | Sub MsgBoxQuestionIcon ()MsgBox "Primjer pitanja", vbQuestionKraj podm |
Ikone MsgBox - Usklik
123 | Sub MsgBoxExclamationIcon ()MsgBox "Primjer uzvika", vbExclamationKraj podm |
U nastavku ćemo govoriti o generiranju okvira s porukama s različitim rasporedom gumba. Ako odaberete drugu vrstu okvira za poruke, morat ćete dodati tip ikone nakon gumba pomoću znaka "+":
123 | Sub MsgBoxQuestionIcon ()MsgBox "Želite li nastaviti?", VbOKCancel + vbQuestionKraj podm |
MsgBox varijable
Do sada smo radili prvenstveno sa zadanim okvirom za poruku 'OK'. Okvir s porukom OK ima samo jednu opciju: Pritiskom na ‘OK’ omogućuje se nastavak koda. Međutim, možete odrediti i druga grupiranja gumba: U redu / Odustani, Da / Ne itd.
U tom slučaju želite izvršiti različite radnje ovisno o pritisnutom gumbu. Pogledajmo primjer.
Ovo je okvir za poruku koji ćemo generirati:
Ovo je cijeli kôd (dalje ćemo ga razložiti):
123456789101112 | Pod MsgBoxVariable ()Zatamnjen odgovor Kao cijeli brojanswer = MsgBox ("Želite li nastaviti?", vbQuestion + vbDaNe)Ako je odgovor = vbDaMsgBox "Da"DrugoMsgBox "Ne"Završi akoKraj podm |
Prvo dodjeljujemo izlaz okvira poruka cjelobrojnoj varijabli.
123 | Zatamnjen odgovor Kao cijeli brojanswer = MsgBox ("Želite li nastaviti?", vbQuestion + vbDaNe) |
Zatim koristimo If-Else da odredimo što učiniti na temelju pritiska na gumb:
12345 | Ako je odgovor = vbDaMsgBox "Da"DrugoMsgBox "Ne"Završi ako |
Funkcija MsgBox vraća cijelu vrijednost (između 1-7) pa definiramo varijablu kao cijeli broj. Međutim, umjesto upućivanja na cijeli broj, možete se pozvati na konstantu (npr. VbOK, vbCancel itd.). Pogledajte ovu tablicu kako biste vidjeli sve mogućnosti:
Dugme | Konstantno | Vrijednost |
---|---|---|
u redu | vbOK | 1 |
Otkazati | vbOdustani | 2 |
Prekid | vbAbort | 3 |
Pokušajte ponovo | vbRetry | 4 |
Zanemariti | vbIgnore | 5 |
Da | vbDa | 6 |
Ne | vbNo | 7 |
Sada ćemo demonstrirati svako grupiranje gumba:
OK okvir za poruke - vbOKSamo
Ovo je standardni VBA okvir za poruke.
123456 | Pod MsgBox_OKSamo ()Zatamnjen odgovor Kao cijeli brojanswer = MsgBox ("U redu samo primjer", vbOKOnly)Kraj podm |
OK Otkaži okvir s porukom - vbOKOdustani
123456789101112 | Sub MsgBox_OKOdustani ()Zatamnjen odgovor Kao cijeli brojanswer = MsgBox ("OK Otkaži primjer", vbOKCancel)Ako je odgovor = vbOK TadaMsgBox "U redu"DrugoMsgBox "Otkaži"Završi akoKraj podm |
Da Ne Okvir za poruke - vbDaNe
123456789101112 | Pod MsgBox_DaNe ()Zatamnjen odgovor Kao cijeli brojanswer = MsgBox ("Da Ne Primjer", vbYesNo)Ako je odgovor = vbDaMsgBox "Da"DrugoMsgBox "Ne"Završi akoKraj podm |
Da Ne Otkaži okvir s porukom - vbDaNoOdustani
1234567891011121314 | Pod MsgBox_DaNeOpostavi ()Zatamnjen odgovor Kao cijeli brojanswer = MsgBox ("Da Ne Otkaži primjer", vbYesNoCancel)Ako je odgovor = vbDaMsgBox "Da"Inače ako je odgovor = vbNo TadaMsgBox "Ne"DrugoMsgBox "Otkaži"Završi akoKraj podm |
Okvir za poruku Zanemari ponovno pokušaj zanemariti - vbAbortRetryIgnore
1234567891011121314 | Sub MsgBox_AbortRetryIgnore ()Zatamnjen odgovor Kao cijeli brojanswer = MsgBox ("Primjer zanemarivanja ponovnog pokušaja zanemarivanja", vbAbortRetryIgnore)Ako je odgovor = vbAbort TadaMsgBox "Prekini"Inače if answer = vbRetry thenMsgBox "Pokušaj ponovno"DrugoMsgBox "Zanemari"Završi akoKraj podm |
Pokušaj ponovno otkazati okvir za poruku - vbRetryCancel
123456789101112 | Sub MsgBox_RetryCancel ()Zatamnjen odgovor Kao cijeli brojanswer = MsgBox ("Primjer ponovnog otkazivanja", vbRetryCancel)Ako je odgovor = vbRetry thenMsgBox "Pokušaj ponovno"DrugoMsgBox "Otkaži"Završi akoKraj podm |
Primjeri VBA MessageBox -a
Potvrda okvira s porukama prije pokretanja makronaredbe
Ovaj će kôd prikazati okvir Da poruka prije pozivanja makronaredbe. Ako se klikne Da, makro se poziva, ako se klikne Ne, Makro se ne pokreće.
12345678 | Sub Msgbox_BeforeRunning ()Zatamnjen odgovor Kao cijeli brojanswer = MsgBox ("Želite li pokrenuti Macro1?", vbQuestion + vbDaNe)Ako je odgovor = vbDa Pozovite Makro1Kraj podm |
Da / Ne okvir s porukom - izađite iz podm
Ovdje ćemo s korisnikom potvrditi hoćemo li nastaviti izvoditi makronaredbu. Ako se klikne Ne, kôd će izaći iz podmetre, u protivnom će se postupak nastaviti.
12345678910 | Sub Msgbox_BeforeRunning ()Zatamnjen odgovor Kao cijeli brojanswer = MsgBox ("Želite li nastaviti?", vbQuestion + vbDaNe)Ako je odgovor = vbNo Zatim izađite iz podm»Neki KodeksKraj podm |
VBA okvir s porukama u programu Access VBA
Svi gornji primjeri rade potpuno isto u Access VBA kao i u Excel VBA.