Ta vadnica bo obravnavala, kako s funkcijo VBA MsgBox prikazati nabore sporočil uporabnikom (vključno s sporočilom YesNo). Morda vas zanima tudi naš članek o vhodnih okencih.
Funkcija VBA MsgBox
V VBA je preprosto prikazati preprost MsgBox:
1 | MsgBox "To je polje za sporočila" |
Vendar lahko naredite veliko več kot le prikazati preprosto okno s sporočilom OK. Na hitro poglejmo zapleten primer, preden se poglobimo v podrobnosti …
VBA DaNe polje za sporočila
Spodaj bomo ustvarili polje za sporočila z:
- Naslov »Naslov polja z sporočili« in poziv »Besedilo«
- Ikona vprašaja
- Da / Ne možnosti namesto preprostega »V redu«
- Privzeti gumb = 'Ne'
123 | Zatemnjen odgovor kot celo številoanswer = MsgBox ("Besedilo", vbQuestion + vbDaNe + vbDefaultButton2, "Naslov polja za sporočila") |
Poštno polje bo vrnilo vbYes ali vbNo, odvisno od izbire uporabnika. Nato lahko na podlagi izbire izvedete različna dejanja:
12345 | Če je odgovor = vbDaMsgBox "Da"Sicer paMsgBox "Ne"Konec Če |
V naslednjem razdelku vam bomo pokazali vse možnosti, ki so vam na voljo pri ustvarjanju oken za sporočila. Nato vas bomo seznanili s sintakso funkcije MsgBox in na koncu preučili druge primere oken za sporočila.
Možnosti polja za sporočila VBA
Oglejte si spodnjo sliko. Tu boste videli (skoraj) vse možnosti, ki so vam na voljo pri ustvarjanju oken za sporočila. Bodite pozorni na ikone in različne gumbe.
To je posnetek zaslona »MessageBox Builder« iz našega dodatka Premium VBA: AutoMacro. Builder MessageBox vam omogoča hitro oblikovanje želenega nabiralnika in vstavljanje kode v kodni modul. Vsebuje tudi številne druge ustvarjalce kod, obsežno knjižnico kod VBA in izbor orodij za kodiranje. To mora imeti vsak razvijalec VBA.
Sintaksa funkcije MsgBox
MsgBox (poziv [, gumbi] [, naslov] [, datoteka pomoči, kontekst])
poziv (obvezno) - To je primarno besedilo polja za sporočila.
gumbi - Izberite gumbe za prikaz. Če izpustite, samo »V redu«. Tu lahko določite tudi, katero ikono želite prikazati, in privzeti gumb.
naslov - Naslov na vrhu polja s sporočilom. Če izpustite, se prikaže ime trenutne aplikacije (npr. Microsoft Excel).
datoteko za pomoč - Določite datoteko pomoči, do katere lahko dostopate, ko uporabnik klikne gumb »Pomoč«. Če je navedeno, morate dodati tudi kontekst (spodaj)
kontekstu - Številčni izraz, ki predstavlja številko konteksta pomoči, dodeljeno ustrezni temi pomoči.
Verjetno lahko prezrete datoteko za pomoč in kontekstne argumente. Nikoli jih nisem videl rabljenih.
Prilagodite naslov in poziv polja z sporočili
Funkcija MsgBox vam omogoča, da prilagodite naslov in sporočila poziva tako:
1 | Sporočilo "Poziv" ,, "Naslov" |
Še en primer:
123 | Sub MsgBoxPromptTitle ()MsgBox "1. korak dokončan. Kliknite V redu, da zaženete 2. korak." ,, "1. korak od 5"End Sub |
Pomembno! Ne pozabite obdati besedila s citati.
MessageBox LineBreaks
V pozive po polju za sporočila lahko dodate tudi prelome vrstic z »vbNewLine«.
123 | Sub MsgBoxPromptTitle_NewLine ()MsgBox "Korak 1 dokončan." & vbNewLine & "Kliknite V redu za zagon 2. koraka", "1. korak od 5"End Sub |
Upoštevajte, da uporabljamo simbol & za združevanje besedila. Več o uporabi & z besedilom in drugih možnostih za vstavljanje prelomov vrstic lahko izveste v našem članku o združevanju besedila.
Ikone MsgBox
VBA vam omogoča, da v okenca za sporočila dodate eno od štirih vnaprej pripravljenih ikon:
Ikona konstantna | Ikona |
---|---|
vbInformacije | ![]() |
vbCritical | ![]() |
vbVprašanje | ![]() |
vbKlicaj | ![]() |
V argument gumba je treba postaviti konstanto ikone:
123 | Sub MsgBoxQuestionIcon ()MsgBox "Primer vprašanja", vbQuestionEnd Sub |
To bo ustvarilo privzeto polje s sporočilom »V redu« z ikono vprašanja:
Upoštevajte, kako vam bo urejevalnik VBA med tipkanjem pokazal možnosti, ki so vam na voljo:
To je v pomoč, ker vam ni treba zapomniti natančne skladnje ali imen ikon ali gumbov.
Zdaj bomo prikazali ikono vsakega polja za sporočila:
Ikone MsgBox - Informacije
123 | Sub MsgBoxInformationIcon ()MsgBox "Informacijski primer", vbInformationEnd Sub |
Ikone MsgBox - kritične
123 | Sub MsgBoxCriticalIcon ()MsgBox "Kritični primer", vbCriticalEnd Sub |
Ikone MsgBox - Vprašanje
123 | Sub MsgBoxQuestionIcon ()MsgBox "Primer vprašanja", vbQuestionEnd Sub |
Ikone MsgBox - Klicaj
123 | Sub MsgBoxExclamationIcon ()MsgBox "Primer vzklika", vbExclamationEnd Sub |
Spodaj bomo govorili o ustvarjanju oken za sporočila z različnimi postavitvami gumbov. Če izberete drugo vrsto polja za sporočila, boste morali tipki dodati tipko s tipko »+«:
123 | Sub MsgBoxQuestionIcon ()MsgBox "Ali želite nadaljevati?", VbOKCancel + vbQuestionEnd Sub |
Spremenljivke MsgBox
Doslej smo delali predvsem s privzetim poljem »V redu«. Sporočilo OK ima samo eno možnost: Če pritisnete »V redu«, se koda lahko nadaljuje. Lahko pa določite tudi druge skupine gumbov: V redu / Prekliči, Da / Ne itd.
V tem primeru boste želeli izvesti različna dejanja glede na pritisk gumba. Poglejmo primer.
Tukaj je polje s sporočilom, ki ga bomo ustvarili:
To je celotna koda (naslednji jo bomo razčlenili):
123456789101112 | Sub MsgBoxVariable ()Zatemnjen odgovor kot celo številoanswer = MsgBox ("Ali želite nadaljevati?", vbQuestion + vbDa Ne)Če je odgovor = vbDaMsgBox "Da"Sicer paMsgBox "Ne"Konec ČeEnd Sub |
Najprej dodelimo izhod v sporočilu celobrojni spremenljivki.
123 | Zatemnjen odgovor kot celo številoanswer = MsgBox ("Ali želite nadaljevati?", vbQuestion + vbDa Ne) |
Nato uporabimo If-Else, da ugotovimo, kaj storiti glede na pritisnjen gumb:
12345 | Če je odgovor = vbDaMsgBox "Da"Sicer paMsgBox "Ne"Konec Če |
Funkcija MsgBox vrne celoštevilčno vrednost (med 1-7), zato spremenljivko definiramo kot celoštevilsko vrsto. Namesto da bi se sklicevali na celo število, se lahko sklicujete na konstanto (npr. VbOK, vbCancel itd.). V tej tabeli si oglejte vse možnosti:
Gumb | Konstantno | Vrednost |
---|---|---|
v redu | vbOK | 1 |
Prekliči | vb Prekliči | 2 |
Prekini | vbAbort | 3 |
Poskusite znova | vbRetry | 4 |
Prezri | vbIgnore | 5 |
Da | vbDa | 6 |
Ne | vbNo | 7 |
Zdaj bomo predstavili vsako skupino gumbov:
OK Sporočilo - vbOKOnly
To je standardni nabiralnik sporočil VBA.
123456 | Sub MsgBox_OKOnly ()Zatemnjen odgovor kot celo številoanswer = MsgBox ("V redu samo primer", vbOKOnly)End Sub |
OK Prekliči sporočilo - vbOK Prekliči
123456789101112 | Pod MsgBox_OK Prekliči ()Zatemnjen odgovor kot celo številoanswer = MsgBox ("V redu Prekliči primer", vbOKCancel)Če je odgovor = vbOK PotemSporočilo "V redu"Sicer paMsgBox "Prekliči"Konec ČeEnd Sub |
Da Ne Sporočilo - vbDaNe
123456789101112 | Pod MsgBox_DaNe ()Zatemnjen odgovor kot celo številoanswer = MsgBox ("Da Ne Primer", vbYesNo)Če je odgovor = vbDaMsgBox "Da"Sicer paMsgBox "Ne"Konec ČeEnd Sub |
Da Ne Prekliči polje s sporočilom - vbDaNo Prekliči
1234567891011121314 | Pod MsgBox_DaNe Prekliči ()Zatemnjen odgovor kot celo številoanswer = MsgBox ("Da Ne Prekliči primer", vbYesNoCancel)Če je odgovor = vbDaMsgBox "Da"V nasprotnem primeru odgovor = vbNo PotemMsgBox "Ne"Sicer paMsgBox "Prekliči"Konec ČeEnd Sub |
Okvir za sporočila Prezri znova poskusi prezreti - vbAbortRetryIgnore
1234567891011121314 | Sub MsgBox_AbortRetryIgnore ()Zatemnjen odgovor kot celo številoanswer = MsgBox ("Primer preklica ignoriranja ponovnega poskusa", vbAbortRetryIgnore)Če je odgovor = vbAbort PotemSporočilo "Prekini"ElseIf answer = vbRetry NatoMsgBox "Poskusi znova"Sicer paMsgBox "Prezri"Konec ČeEnd Sub |
Ponovno poskusi preklicati sporočilo - vbRetryCancel
123456789101112 | Sub MsgBox_RetryCancel ()Zatemnjen odgovor kot celo številoanswer = MsgBox ("Primer ponovnega preklica", vbRetryCancel)Če je odgovor = vbPoskusite znovaMsgBox "Poskusi znova"Sicer paMsgBox "Prekliči"Konec ČeEnd Sub |
Primeri VBA MessageBox
Potrditev polja za sporočila pred zagonom makra
Ta koda bo pred klicem makra prikazala polje Da sporočilo. Če kliknete Da, se pokliče makro, če kliknete Ne, se makro ne zažene.
12345678 | Sub Msgbox_BeforeRunning ()Zatemnjen odgovor kot celo številoanswer = MsgBox ("Ali želite zagnati Macro1?", vbQuestion + vbDaNe)Če je odgovor = vbDa, potem pokličite makro1End Sub |
Da / Ne Sporočilo - Zapri Sub
Tu bomo z uporabnikom potrdili, ali naj še naprej izvaja makro. Če kliknete Ne, se koda zapre iz podrejenega, sicer se postopek nadaljuje.
12345678910 | Sub Msgbox_BeforeRunning ()Zatemnjen odgovor kot celo številoanswer = MsgBox ("Ali želite nadaljevati?", vbQuestion + vbDa Ne)Če je odgovor = vbNo, potem zapustite pod"Nekaj kodeksaEnd Sub |
VBA sporočilo v Accessu VBA
Vsi zgornji primeri delujejo popolnoma enako v Access VBA kot v Excelu VBA.