Ez az oktatóanyag bemutatja, hogyan kell használni a VBA MsgBox funkciót az üzenetdobozok megjelenítéséhez a felhasználók számára (beleértve az IgenNem üzenetmezőt). Ön is érdekelheti az InputBox -okról szóló cikkünket.
VBA MsgBox funkció
A VBA -ban egyszerű az egyszerű MsgBox megjelenítése:
1 | MsgBox "Ez egy üzenetdoboz" |
Mindazonáltal sokkal többet tehet, mint egy egyszerű OK üzenetmező megjelenítése. Nézzünk gyorsan egy bonyolult példát, mielőtt belemerülünk a konkrétumokba…
VBA IgenNem Üzenetdoboz
Az alábbiakban létrehozunk egy üzenetdobozt a következőkkel:
- Cím „Üzenetdoboz címe” és „Szöveg”
- Kérdőjel ikon
- Igen / Nem lehetőségek az egyszerű „OK” helyett
- Alapértelmezett gomb = 'Nem'
123 | Halvány válasz Egész számkéntanswer = MsgBox ("Szöveg", vbQuestion + vbYesNo + vbDefaultButton2, "Message Box Title") |
Az üzenetdoboz visszaadja a vbYes vagy a vbNo értéket a felhasználó választásától függően. Ezután különböző műveleteket hajthat végre a választás alapján:
12345 | Ha a válasz = vbIgen AkkorMsgBox "Igen"MásMsgBox "Nem"Vége Ha |
A következő részben megmutatjuk az összes lehetőséget, amely az üzenetdobozok létrehozásakor rendelkezésre áll. Ezután bemutatjuk az MsgBox függvény szintaxisát, és végül áttekintünk más példákat az üzenettáblákra.
VBA Üzenetdoboz opciók
Vessen egy pillantást az alábbi képre. Itt látni fogja (majdnem) az összes lehetőséget, amelyet az üzenetdobozok létrehozásakor kaphat. Vegye figyelembe az ikonokat és a különböző gombokat.
Ez egy képernyőkép a „MessageBox Builder” -ről a prémium VBA bővítményünkből: AutoMacro. A MessageBox Builder segítségével gyorsan megtervezheti a kívánt üzenetládát, és beillesztheti a kódot a kódmodulba. Ezenkívül sok más kódkészítőt, kiterjedt VBA kódkönyvtárat és kódolóeszközöket is tartalmaz. Ez minden VBA fejlesztő számára kötelező.
Az MsgBox függvény szintaxisa
MsgBox (prompt [, gombok] [, cím] [, súgófájl, kontextus])
gyors (kötelező) - Ez az elsődleges üzenetdoboz szövege.
gombok - Válassza ki a megjelenítendő gombokat. Ha elhagyja, „OK”. Itt is megadhatja, hogy melyik ikont jelenítse meg, és az alapértelmezett gombot.
cím - A cím az üzenetdoboz tetején. Ha elhagyja, megjelenik az aktuális alkalmazás neve (pl. Microsoft Excel).
helpfile - Adja meg a súgófájlt, amely akkor érhető el, ha a felhasználó a „Súgó” gombra kattint. Ha megadta, akkor hozzá kell adnia a kontextust is (lent)
kontextus - A megfelelő Súgó témakörhöz rendelt Súgó kontextusszámát reprezentáló numerikus kifejezés.
Valószínűleg figyelmen kívül hagyhatja a súgófájlt és a környezeti érveket. Soha nem láttam őket használni.
Testreszabhatja az üzenetdoboz címét és a promptot
Az MsgBox funkció lehetővé teszi a cím és a gyorsüzenetek testreszabását az alábbiak szerint:
1 | Msgbox "Prompt", "Title" |
Egy másik példa:
123 | Sub MsgBoxPromptTitle ()MsgBox "1. lépés Végezze el. Kattintson az OK gombra a 2. lépés futtatásához." ,, "1. lépés az 5 -ből"End Sub |
Fontos! Ne felejtse el idézetekkel körülvenni a szöveget.
MessageBox LineBreaks
A „vbNewLine” segítségével sortöréseket is hozzáadhat az üzenetdoboz -értesítésekhez.
123 | Sub MsgBoxPromptTitle_NewLine ()MsgBox "1. lépés Vége." & vbNewLine & "Kattintson az OK gombra a 2. lépés futtatásához", "1. lépés az 5 -ből"End Sub |
Figyeljük meg, hogy a & szimbólumot használjuk a szöveg összeillesztéséhez. A szöveg és a szöveg használatával történő használatról és a sortörések beillesztésének egyéb lehetőségeiről bővebben a szöveg összekapcsolásáról szóló cikkünkben olvashat.
MsgBox ikonok
A VBA lehetőséget ad arra, hogy a négy előre elkészített ikon egyikét hozzáadja az üzenetmezőkhöz:
Állandó ikon | Ikon |
---|---|
vbInformation | ![]() |
vbKritikus | ![]() |
vbKérdés | ![]() |
vbKiáltás | ![]() |
Az ikonállandót a gomb argumentumon belül kell elhelyezni:
123 | Sub MsgBoxQuestionIcon ()MsgBox "Kérdéses példa", vbQuestionEnd Sub |
Ez létrehozza az alapértelmezett „OK” üzenetmezőt a Kérdés ikonnal:
Figyelje meg, hogy gépelés közben a VBA -szerkesztő megjeleníti a rendelkezésre álló lehetőségeket:
Ez azért hasznos, mert nem kell emlékeznie az ikonok vagy gombok pontos szintaxisára vagy nevére.
Most bemutatjuk az egyes üzenetdoboz ikonokat:
MsgBox ikonok - Információ
123 | Sub MsgBoxInformationIcon ()MsgBox "Információs példa", vbInformationEnd Sub |
MsgBox ikonok - kritikus
123 | Sub MsgBoxCriticalIcon ()MsgBox "Kritikus példa", vbCriticalEnd Sub |
MsgBox ikonok - Kérdés
123 | Sub MsgBoxQuestionIcon ()MsgBox "Kérdéses példa", vbQuestionEnd Sub |
MsgBox ikonok - Felkiáltás
123 | Sub MsgBoxExclamationIcon ()MsgBox "Felkiáltási példa", vbExclamationEnd Sub |
Az alábbiakban különböző gombok elrendezésű üzenetdobozok létrehozásáról fogunk beszélni. Ha másik üzenettípus -típust választ, akkor a gombok után hozzá kell fűznie az ikontípust a „+” jel használatával:
123 | Sub MsgBoxQuestionIcon ()MsgBox "Folytatni szeretné?", VbOKCancel + vbQuestionEnd Sub |
MsgBox változók
Eddig elsősorban az alapértelmezett „OK” üzenetmezővel dolgoztunk. Az OK üzenetmezőnek csak egy lehetősége van: Az „OK” megnyomása lehetővé teszi a kód folytatását. Megadhat azonban más gombcsoportokat is: OK / Mégse, Igen / Nem, stb.
Ebben az esetben a gomb megnyomása alapján különböző műveleteket szeretne végrehajtani. Nézzünk egy példát.
Íme az üzenetdoboz, amelyet létrehozunk:
Ez a teljes kód (legközelebb lebontjuk):
123456789101112 | Sub MsgBoxVariable ()Halvány válasz Egész számkéntanswer = MsgBox ("Folytatni akarod?", vbQuestion + vbYesNo)Ha a válasz = vbIgen AkkorMsgBox "Igen"MásMsgBox "Nem"Vége HaEnd Sub |
Először hozzárendeljük az üzenetdoboz kimenetét egy egész változóhoz.
123 | Halvány válasz Egész számkéntanswer = MsgBox ("Folytatni akarod?", vbQuestion + vbYesNo) |
Ezután az If-Else segítségével határozzuk meg, hogy mit kell tennünk a gomb megnyomása alapján:
12345 | Ha a válasz = vbIgen AkkorMsgBox "Igen"MásMsgBox "Nem"Vége Ha |
Az MsgBox függvény egész értéket ad vissza (1-7), így a változót egész típusként definiáljuk. Ahelyett, hogy az egész számra hivatkozna, hivatkozhat egy konstansra (pl. VbOK, vbCancel stb.). Nézze meg ezt a táblázatot az összes lehetőség megtekintéséhez:
Gomb | Állandó | Érték |
---|---|---|
rendben | vbOK | 1 |
Megszünteti | vbCancel | 2 |
Elvetél | vbAbort | 3 |
Próbálja újra | vbPróbálkozás | 4 |
Figyelmen kívül hagyni | vbIgnore | 5 |
Igen | vbIgen | 6 |
Nem | vbNem | 7 |
Most bemutatjuk az egyes gombcsoportokat:
OK Üzenetdoboz - vbOKOnly
Ez a szabványos VBA üzenetlista.
123456 | Sub MsgBox_OKOnly ()Halvány válasz Egész számkéntanswer = MsgBox ("OKOnly példa", vbOKOnly)End Sub |
OK Üzenetdoboz törlése - vbOKCancel
123456789101112 | Sub MsgBox_OKCancel ()Halvány válasz Egész számkéntanswer = MsgBox ("OK Mégse Példa", vbOKCancel)Ha a válasz = vbOK AkkorMsgBox "OK"MásMsgBox "Mégse"Vége HaEnd Sub |
Igen Nem Üzenetdoboz - vbIgenNem
123456789101112 | Sub MsgBox_YesNo ()Halvány válasz Egész számkéntanswer = MsgBox ("Igen Nem példa", vbYesNo)Ha a válasz = vbIgen AkkorMsgBox "Igen"MásMsgBox "Nem"Vége HaEnd Sub |
Igen Nem Mégse Üzenetdoboz - vbYesNoCancel
1234567891011121314 | Sub MsgBox_YesNoCancel ()Halvány válasz Egész számkéntanswer = MsgBox ("Igen Nem Mégse Példa", vbYesNoCancel)Ha a válasz = vbIgen AkkorMsgBox "Igen"KülönbenHa válasz = vbNem AkkorMsgBox "Nem"MásMsgBox "Mégse"Vége HaEnd Sub |
Újrapróbálkozás megszakítása Üzenetdoboz figyelmen kívül hagyása - vbAbortRetryIgnore
1234567891011121314 | Sub MsgBox_AbortRetryIgnore ()Halvány válasz Egész számkéntanswer = MsgBox ("Abort Retry Ignore példa", vbAbortRetryIgnore)Ha a válasz = vbAbort AkkorMsgBox "Megszakítás"KülönbenHa válasz = vbPróbáld meg akkorMsgBox "Újra"MásMsgBox "figyelmen kívül hagyás"Vége HaEnd Sub |
Újrapróbálkozás Mégse Üzenetdoboz - vbRetryCancel
123456789101112 | Sub MsgBox_RetryCancel ()Halvány válasz Egész számkéntanswer = MsgBox ("Példa újrapróbálkozásra", vbRetryCancel)Ha a válasz = vbRetry thenMsgBox "Újra"MásMsgBox "Mégse"Vége HaEnd Sub |
Példák a VBA MessageBox -ra
Üzenetdoboz megerősítése a makró futtatása előtt
Ez a kód egy Igen Nem üzenet mezőt jelenít meg a makró hívása előtt. Ha az Igen gombra kattint, a makró meghívásra kerül, ha a Nem gombra kattint, a makró nem fut.
12345678 | Sub Msgbox_BeforeRunning ()Halvány válasz Egész számkéntanswer = MsgBox ("Futtatni szeretné a Macro1 -et?", vbQuestion + vbYesNo)Ha a válasz = vbIgen, akkor hívja a makrót1End Sub |
Igen / Nem Üzenetdoboz - Kilépés al
Itt megerősítjük a felhasználóval, hogy folytatja -e a makró futtatását. Ha a Nem gombra kattint, a kód kilép az aloldalból, ellenkező esetben az eljárás folytatódik.
12345678910 | Sub Msgbox_BeforeRunning ()Halvány válasz Egész számkéntanswer = MsgBox ("Folytatni akarod?", vbQuestion + vbYesNo)Ha a válasz = vbNe, akkor lépjen ki a Sub menüből- Valami kódEnd Sub |
VBA Üzenetdoboz az Access VBA -ban
A fenti példák mindegyike pontosan ugyanúgy működik az Access VBA -ban, mint az Excel VBA -ban.