Acest tutorial va acoperi modul de utilizare a funcției VBA MsgBox pentru a afișa cutii de mesaje utilizatorilor (inclusiv Cutia de mesaje YesNo). S-ar putea să vă intereseze și articolul nostru despre InputBoxes.
Funcția VBA MsgBox
În VBA, este ușor să afișați un MsgBox simplu:
1 | MsgBox "Aceasta este o casetă de mesaje" |
Cu toate acestea, puteți face mult mai mult decât să afișați o simplă casetă de mesaje OK. Să vedem rapid un exemplu complicat înainte de a ne arunca cu capul în detalii …
VBA Da Nu Casetă de mesaje
Mai jos vom crea o casetă de mesaj cu:
- Un titlu „Titlul casetei de mesaj” și solicitarea „Text”
- O pictogramă semn de întrebare
- Opțiuni Da / Nu în locul unui simplu „OK”
- Buton implicit = „Nu”
123 | Răspuns slab Ca întreganswer = MsgBox („Text”, vbQuestion + vbYesNo + vbDefaultButton2, „Title Box Message”) |
Mesajul va returna vbDa sau vbNo în funcție de alegerea utilizatorului. Apoi, puteți efectua diferite acțiuni pe baza alegerii:
12345 | Dacă răspuns = vbDa atunciMsgBox „Da”AltfelMsgBox „Nu”End If |
În secțiunea următoare vă vom arăta toate opțiunile disponibile la crearea casetelor de mesaje. Apoi vă vom prezenta sintaxa funcției MsgBox și, în cele din urmă, vom trece peste alte exemple de casete de mesaje.
Opțiuni pentru caseta de mesaje VBA
Uitați-vă la imaginea de mai jos. Aici veți vedea (aproape) toate opțiunile disponibile la crearea casetelor de mesaje. Observați pictogramele și diferitele butoane.
Aceasta este o captură de ecran a „MessageBox Builder” din programul nostru de completare Premium VBA: AutoMacro. MessageBox Builder vă permite să proiectați rapid căsuța de mesaje dorită și să introduceți codul în modulul de cod. De asemenea, conține mulți alți constructori de coduri, o bibliotecă extinsă de coduri VBA și un sortiment de instrumente de codare. Este obligatoriu pentru orice dezvoltator VBA.
Sintaxa funcției MsgBox
MsgBox (prompt [, butoane] [, titlu] [, fișier de ajutor, context])
prompt (Obligatoriu) - Acesta este textul principal al casetei de mesaj.
butoane - Alegeți ce butoane să afișați. Dacă este omis, „OKonly”. Aici puteți specifica, de asemenea, ce pictogramă să afișați și butonul implicit.
titlu - Titlul din partea de sus a casetei de mesaje. Dacă este omis, se afișează numele aplicației curente (ex. Microsoft Excel).
fișier de ajutor - Specificați fișierul de ajutor care poate fi accesat atunci când utilizatorul face clic pe butonul „Ajutor”. Dacă este specificat, trebuie să adăugați și context (mai jos)
context - Expresie numerică care reprezintă numărul contextului Ajutor atribuit subiectului Ajutor corespunzător.
Puteți ignora probabil fișierele de ajutor și argumentele de context. Nu le-am văzut niciodată folosite.
Personalizați titlul și promptul casetei de mesaje
Funcția MsgBox vă permite să personalizați titlul și să solicitați mesajele astfel:
1 | Mesaj "Prompt" ,, "Titlu" |
Alt exemplu:
123 | Sub MsgBoxPromptTitle ()MsgBox "Pasul 1 finalizat. Faceți clic pe OK pentru a rula pasul 2." ,, "Pasul 1 din 5"Sfârșitul Sub |
Important! Trebuie să vă amintiți să vă înconjurați textul cu citate.
MessageBox LineBreaks
De asemenea, puteți adăuga întreruperi de linie la solicitările casetei de mesaj cu „vbNewLine”.
123 | Sub MsgBoxPromptTitle_NewLine ()MsgBox „Pasul 1 finalizat”. & vbNewLine & „Faceți clic pe OK pentru a rula Pasul 2.”, „Pasul 1 din 5”Sfârșitul Sub |
Observați că folosim simbolul & pentru a uni textul împreună. Puteți afla mai multe despre utilizarea & cu text și alte opțiuni pentru inserarea liniarelor în articolul nostru despre aderarea la text.
Pictograme MsgBox
VBA vă oferă posibilitatea de a adăuga una din cele patru pictograme pre-construite în casetele dvs. de mesaje:
Pictogramă constantă | Pictogramă |
---|---|
vbInformații | |
vbCritic | |
vbÎntrebare | |
vbExclamation |
Constanta pictogramei trebuie plasată în argumentul buton:
123 | Sub MsgBoxQuestionIcon ()MsgBox „Exemplu de întrebare”, vbQuestionSfârșitul Sub |
Aceasta va genera caseta de mesaj implicită „OK” cu pictograma Întrebare:
Observați cum, atunci când tastați, Editorul VBA vă va arăta opțiunile disponibile:
Acest lucru este util, deoarece nu trebuie să vă amintiți exact sintaxa sau numele pictogramelor sau butoanelor.
Acum vom demonstra fiecare pictogramă a casetei de mesaj:
Icoane MsgBox - Informații
123 | Sub MsgBoxInformationIcon ()MsgBox "Exemplu de informații", vbInformationSfârșitul Sub |
Icoane MsgBox - critice
123 | Sub MsgBoxCriticalIcon ()MsgBox „Exemplu critic”, vbCriticalSfârșitul Sub |
Icoane MsgBox - Întrebare
123 | Sub MsgBoxQuestionIcon ()MsgBox „Exemplu de întrebare”, vbQuestionSfârșitul Sub |
Icoane MsgBox - Exclamare
123 | Sub MsgBoxExclamationIcon ()MsgBox "Exemplu de exclamație", vbExclamationSfârșitul Sub |
Mai jos vom vorbi despre generarea de casete de mesaje cu aspecte diferite de butoane. Dacă alegeți un alt tip de casetă de mesaj, va trebui să adăugați tipul de pictogramă după butoane folosind un „+”:
123 | Sub MsgBoxQuestionIcon ()MsgBox „Vrei să continui?”, VbOKCancel + vbQuestionSfârșitul Sub |
Variabile MsgBox
Până acum am lucrat în principal cu caseta de mesaj implicită „OK”. Caseta de mesaje OK are o singură opțiune: Apăsarea „OK” permite codului să continue. Cu toate acestea, puteți specifica și alte grupări de butoane: OK / Anulare, Da / Nu etc.
În acest caz, veți dori să efectuați diferite acțiuni pe baza butonului care este apăsat. Să vedem un exemplu.
Iată căsuța de mesaje pe care o vom genera:
Acesta este întregul cod (îl vom defalca în continuare):
123456789101112 | Sub MsgBoxVariable ()Răspuns slab Ca întreganswer = MsgBox („Vrei să continui?”, vbQuestion + vbYesNo)Dacă răspuns = vbDa atunciMsgBox „Da”AltfelMsgBox „Nu”End IfSfârșitul Sub |
Mai întâi atribuim ieșirea casetei de mesaje unei variabile întregi.
123 | Răspuns slab Ca întreganswer = MsgBox („Vrei să continui?”, vbQuestion + vbYesNo) |
Apoi, folosim un If-Else pentru a determina ce să facem pe baza butonului care este apăsat:
12345 | Dacă răspuns = vbDa atunciMsgBox „Da”AltfelMsgBox „Nu”End If |
Funcția MsgBox returnează o valoare întreagă (între 1-7), deci definim variabila ca un tip întreg. Cu toate acestea, în loc să faceți referire la numărul întreg, puteți face referire la o constantă (ex. VbOK, vbCancel etc.). Uitați-vă la acest tabel pentru a vedea toate opțiunile:
Buton | Constant | Valoare |
---|---|---|
Bine | vbOK | 1 |
Anulare | vbAnulați | 2 |
Abortează | vbAbort | 3 |
Reîncercați | vbRetry | 4 |
Ignora | vbIgnore | 5 |
da | vbDa | 6 |
Nu | vbNu | 7 |
Acum vom demonstra fiecare grupare de butoane:
Casetă de mesaje OK - vbOKOnly
Aceasta este cutia de mesaje VBA standard.
123456 | Sub MsgBox_OKOnly ()Răspuns slab Ca întreganswer = MsgBox ("Exemplu OKOnly", vbOKOnly)Sfârșitul Sub |
OK Anulați caseta de mesaje - vbOKAnulați
123456789101112 | Sub MsgBox_OKCancel ()Răspuns slab Ca întreganswer = MsgBox ("OK Anulare Exemplu", vbOKCancel)Dacă răspuns = vbOK AtunciMsgBox „OK”AltfelMsgBox „Anulare”End IfSfârșitul Sub |
Da Nu Casetă de mesaje - vbDa Nu
123456789101112 | Sub MsgBox_YesNo ()Răspuns slab Ca întreganswer = MsgBox ("Da Nu Exemplu", vbDa Nu)Dacă răspuns = vbDa atunciMsgBox „Da”AltfelMsgBox „Nu”End IfSfârșitul Sub |
Da Nu Anulați caseta de mesaje - vbDa Nu Anulați
1234567891011121314 | Sub MsgBox_YesNoCancel ()Răspuns slab Ca întreganswer = MsgBox ("Da Nu Anulați exemplul", vbDaNuAnulați)Dacă răspuns = vbDa atunciMsgBox „Da”ElseIf answer = vbNo AtunciMsgBox „Nu”AltfelMsgBox „Anulare”End IfSfârșitul Sub |
Anulați reîncercați caseta de mesaje Ignorare - vbAbortRetryIgnore
1234567891011121314 | Sub MsgBox_AbortRetryIgnore ()Răspuns slab Ca întreganswer = MsgBox ("Abort Reîncercați Ignoră Exemplul", vbAbortRetryIgnore)Dacă răspuns = vbAbort AtunciMsgBox „Întrerupeți”ElseIf answer = vbRetry ApoiMsgBox „Încercați din nou”AltfelMsgBox „Ignoră”End IfSfârșitul Sub |
Reîncercați anulați caseta de mesaje - vbRetryCancel
123456789101112 | Sub MsgBox_RetryCancel ()Răspuns slab Ca întreganswer = MsgBox („Exemplu de reîncercare de anulare”, vbRetryCancel)If answer = vbRetry AtunciMsgBox „Încercați din nou”AltfelMsgBox „Anulare”End IfSfârșitul Sub |
Exemple de mesaje VBA
Confirmarea casetei de mesaje înainte de a rula macrocomenzile
Acest cod va afișa o casetă Da Nu Mesaj înainte de a apela o macro. Dacă se face clic pe Da, se apelează macro, dacă se face clic pe Nu, Macro nu rulează.
12345678 | Sub Msgbox_BeforeRunning ()Răspuns slab Ca întreganswer = MsgBox („Vrei să rulezi Macro1?”, vbQuestion + vbYesNo)If answer = vbYes Then Call Macro1Sfârșitul Sub |
Da / Nu Casetă de mesaje - Ieșiți din Sub
Aici vom confirma cu utilizatorul dacă va continua să ruleze o macro. Dacă se face clic pe Nu, codul va ieși din sub, altfel procedura va continua.
12345678910 | Sub Msgbox_BeforeRunning ()Răspuns slab Ca întreganswer = MsgBox („Vrei să continui?”, vbQuestion + vbYesNo)If answer = vbNo Atunci Exit Sub- Un codSfârșitul Sub |
Caseta de mesaje VBA în Access VBA
Toate exemplele de mai sus funcționează exact la fel în Access VBA ca în Excel VBA.