MsgBox funkció használata Excel VBA-ban

ExcelMarketing - MsgBox használata VBA-ban cikk borító

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

ExcelMarketing - MsgBox használata VBA-ban 2

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:

1vbOK – OK gomb lett kattintva
2vbCancel – Mégse gomb lett kattintva
3vbAbort – Leállít gomb lett kattintva
4vbRetry – Ismét gomb lett kattintva
5vbIgnore – Kihagy gomb lett kattintva
6vbYes – Igen gomb lett kattintva
7vbNo – Nem gomb lett kattintva

Tehá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!

Mennyire találtad hasznosnak ezt cikket?
[Összes szavazat: 7 Átlag értékelés: 5]