Az MsgBox egy funkció az Excel VBA-ban, mely eredménye egy párbeszédablak (dialog box) felugrása, tetszőleges szöveggel. A felugró ablak mindaddig aktív marad, amíg a felhasználó valamelyik gombjára nem kattint. Alapesetben ez egy OK gomb.
I. VBA-ban az MsgBox funkcióval tetszőleges szöveget írathatunk ki
Legegyszerűbb alkalmazása, amikor az MsgBox után, egy szóközt kihagyva, a kiírandó szöveget két idézőjel közé tesszük.
MsgBox "Helló Olvasó!"
Nem csak fix szöveget, hanem akár egy cella értékét, vagy egy változót is kiírathatunk vele:
MsgBox Range("A1")
MsgBox valtozo_neve
Van arra is lehetőség, hogy a kiíratni kívánt szöveg több elemből épüljön fel. Azaz legyen benne fix szöveg, egy cella értéke, vagy egy változó. Összefűzni a következő karakterrel tudjuk ezeket: &
MsgBox "Helló " & Range("A1")
Ha esetleg több sorban szeretnék megjeleníteni a kiírandó szöveget, azaz egy sortörést szeretnénk, akkor az a vbNewLine belefűzésével tehetjük meg:
MsgBox "Helló" & vbNewLine & Range("A1")
II. Az MsgBox párbeszédablakának formázása VBA-ban
Az MsgBox funkciónak van egy összetettebb formája is, amely segítségével jobban testre tudjuk szabni a párbeszédablakot. Ez a következő képpen néz ki:
MsgBox(prompt[,buttons][,title][,helpfile,context])
Ezt kb. úgy kell felfogni, mint egy sima Excel függvényt, azaz vannak kötelező és opcionális elemei, amelyeket vesszővel választunk el. Öt paraméter lehetséges:
Prompt
A „függvényünk” első eleme, az úgynevezett, prompt. Ennek helyére kerül az a szöveg, amit ki akarunk írni a párbeszédablakban. Teljesen úgy működik, mint a fenti esetekben. Zárójelben és zárójel nélkül is alkalmazható ha csak ezt a paraméterét használjuk.
MsgBox("Helló Felhasználó!")
MsgBox ("Helló" & vbNewLine & Range("A1"))
Buttons
A buttons paraméter helyére egy szám jön (vagy az előre meghatározott paraméter), annak függvényében, hogy milyen gombokat, vagy milyen meghatározott típusú párbeszédablakot szeretnénk látni. 4+1 csoportra bonthatjuk, az ide írható értékeket:
1. A gombok száma és felirata
0 vagy vbOKOnly – Ez a default érték, eredménye 1 darab gomb, aminek a felirata OK
1 vagy vbOKCancel – 2 db gomb: OK, Mégse
2 vagy vbAbortRetryIgnore – 3 db gomb: Leállítás, Ismét, Kihagyás
3 vagy vbYesNoCancel – 3 db gomb: Igen, Nem, Mégse
4 vagy vbYesNo – 2 db gomb: Igen, Nem
5 vagy vbRetryCancel – 2 db gomb: Ismét, Mégse
2. A párbeszédablakon megjelenő ikon típusa
16 vagy vbCritical – 1 db gomb: OK; Kritikus hiba ikon a szöveg mellett
32 vagy vbQuestion – 1 db gomb: OK; Kérdőjel ikon a szöveg mellett
48 vagy vbExclamation – 1 db gomb: OK; Figyelmeztetés ikon a szöveg mellett
64 vagy vbInformation – 1 db gomb: OK; Információ ikon a szöveg mellett
3. Melyik legyen az alapértelmezett gomb?
0 vagy vbDefaultButton1 – Az első gomb az alapértelmezett, ez a deafult érték
256 vagy vbDefaultButton2 – A második gomb az alapértelmezett
512 vagy vbDefaultButton3 – A harmadik gomb az alapértelmezett
768 vagy vbDefaultButton4 – A negyedik gomb az alapértelmezett
4. Mi legyen a hatásköre?
0 vagy vbApplicationModal – Az adott alkalmazás nem fog működni, amíg le nem nyomunk egy gombot. Ez a default érték.
4096 vagy vbSystemModal – Az összes alkalmazás nem fog addig működni, amíg le nem nyomunk egy gombot a felugrott párbeszédablakon.
5. Pár extra kiegészítő, amiket soha nem fogsz használni 🙂
vbMsgBoxHelpButton – Ad egy plusz súgó gombot
VbMsgBoxSetForeground – Biztosítja, hogy legelöl legyen a párbeszédablakunk
vbMsgBoxRight – Jobboldalra igazítja a szöveget az ablakon
vbMsgBoxRtlReading – Tükrözi a dolgokat
Ezeket az értékeket természetesen lehet egymással használni, a pluszjel „+” segítségével. Nézzünk pár példát:
Msgbox "Hiba lépett fel. Folytatod?", 4 + 16
Msgbox "Nem sikerült beolvasni az adatsort!" & vbNewLine & "Folytatja?", 2 + 48 + 512
Hogyan állapítjuk meg, hogy melyik gomb lett megnyomva?
– Merül fel a kérdés. Minden egyes gomb egy értéket ad vissza, amivel tovább tudunk majd dolgozni:1 – vbOK – OK gomb lett kattintva
2 – vbCancel – Mégse gomb lett kattintva
3 – vbAbort – Leállít gomb lett kattintva
4 – vbRetry – Ismét gomb lett kattintva
5 – vbIgnore – Kihagy gomb lett kattintva
6 – vbYes – Igen gomb lett kattintva
7 – vbNo – Nem gomb lett kattintvaTehát ha én majd a párbeszédablakon megnyomom az Igen gombot, akkor az a háttérben belekiabálja a nagyvilágba, hogy „6”. Ezt kell megfognunk és eltárolnunk valahogy, hogy fel tudjuk majd használni. Most, hogy tudjuk melyik gombnak mi az értéke, teszteljük is le. A feladat következő:
– Csináljunk egy MsgBoxot, ahol van három gomb. Legyen ez a „3” azaz az Igen, Nem, Mégse.
– Mivel azonban ezek az értékek változhatnak, így létre kell hoznunk egy úgynevezett változót, amit nevezzünk el „gomb_valtozo” néven. Ez fogja tárolni a lekattintott gomb értékét.
– Ha pedig lekattintottuk az egyik gombot a párbeszédablakunkban, akkor egy következő párbeszédablakban írjuk ki annak az értékét. Tehát így néz ki a kódunk:gomb_valtozo = MsgBox("Melyik gomb?", 3) MsgBox gomb_valtozo
Direkt van zárójel itt? Mivel itt egy változót vezetünk be az MsgBox elé, ezért szükséges zárójelet alkalmazni az MsgBox utáni paramétereknek. (Ami a többi esetben nem volt kötelező.)
Title
Az MsgBox 3. paramétere a Title, azaz a párbeszédablak címe. Pl.:
Msgbox "Hello!", 0, "Köszönő ablak"
Helpfile
Ide a súgó fájl elérési útvonala jöhet opcionálisan.
Context
Ha van súgó fájl, akkor ide egy szám jöhet opcionálisan, ami segít a súgó fájl megfelelő részére navigálni.
Ezzel teljes körűen kitárgyaltuk, milyen beállításai lehetnek az MsgBox funkciónak az Excel VBA-ban.
Ha tetszett a cikk dobj egy kommentet, ha hiányoltál valamit, akkor is bátran írj!