Tento tutoriál sa bude zaoberať tým, ako používať funkciu VBA MsgBox na zobrazenie schránok správ používateľom (vrátane schránky správ YesNo). Tiež by vás mohol zaujímať náš článok o InputBoxoch.
Funkcia VBA MsgBox
Vo VBA je ľahké zobraziť jednoduchý MsgBox:
1 | MsgBox „Toto je schránka správ“ |
Môžete však urobiť oveľa viac, ako zobraziť jednoduché pole správ OK. Pozrime sa rýchlo na komplikovaný príklad, než sa ponoríme do konkrétnych…
VBA Áno
Nižšie vytvoríme okno so správou s:
- Názov „Názov poľa správy“ a výzva „Text“
- Ikona otáznika
- Možnosti áno / nie namiesto jednoduchého „OK“
- Predvolené tlačidlo = „Nie“
123 | Dim odpoveď ako celé čísloanswer = MsgBox ("Text", vbQuestion + vbYesNo + vbDefaultButton2, "Názov poľa správy") |
Okno so správami vráti vbYes alebo vbNo v závislosti od voľby používateľa. Potom môžete vykonávať rôzne akcie na základe výberu:
12345 | Ak odpoveď = vbÁno PotomMsgBox „Áno“InakMsgBox „Nie“Koniec Ak |
V ďalšej časti vám ukážeme všetky možnosti, ktoré máte k dispozícii pri vytváraní schránok správ. Potom vás zoznámime so syntaxou funkcie MsgBox a nakoniec si prejdeme ďalšie príklady zo schránky so správou.
Možnosti schránky správ VBA
Pozrite sa na obrázok nižšie. Tu uvidíte (takmer) všetky možnosti, ktoré máte k dispozícii pri vytváraní schránok správ. Všimnite si ikon a rôznych tlačidiel.
Toto je snímka obrazovky „MessageBox Builder“ z nášho doplnku Premium VBA: AutoMacro. MessageBox Builder vám umožňuje rýchlo navrhnúť požadovanú schránku správ a vložiť kód do modulu kódu. Obsahuje tiež mnoho ďalších tvorcov kódu, rozsiahlu knižnicu kódov VBA a sortiment kódovacích nástrojov. Je to nevyhnutné pre každého vývojára VBA.
Syntax funkcie MsgBox
MsgBox (výzva [, tlačidlá] [, názov] [, súbor pomoci, kontext])
výzva (povinné) - Toto je hlavný text poľa správy.
tlačidlá - Vyberte, ktoré tlačidlá sa majú zobraziť. Ak je vynechaný, „OKonly“. Tu môžete tiež určiť, ktorá ikona sa má zobraziť, a predvolené tlačidlo.
titul - Názov v hornej časti poľa so správou. Ak je vynechaný, zobrazí sa názov aktuálnej aplikácie (napr. Microsoft Excel).
pomocný súbor - Zadajte súbor pomocníka, ku ktorému sa dostanete, keď používateľ klikne na tlačidlo „Pomocník“. Ak je uvedené, musíte tiež pridať kontext (nižšie)
kontext - Číselný výraz predstavujúci číslo kontextu pomoci priradené k príslušnej téme pomoci.
Pravdepodobne môžete ignorovať súbor pomocníka a kontextové argumenty. Nikdy som ich nevidel použitých.
Prispôsobte názov a výzvu poľa správy
Funkcia MsgBox vám umožňuje prispôsobiť titul a správy s výzvou takto:
1 | Msgbox "Výzva", "Názov" |
Ďalší príklad:
123 | Sub MsgBoxPromptTitle ()MsgBox "Krok 1 je dokončený. Kliknutím na tlačidlo OK spustíte krok 2." "" Krok 1 z 5 "Koniec pod |
Dôležité! Musíte pamätať na to, že svoj text obklopíte citátmi.
MessageBox LineBreaks
Do výziev do poľa so správou môžete tiež pridať zlomy riadkov pomocou „vbNewLine“.
123 | Sub MsgBoxPromptTitle_NewLine ()MsgBox "Krok 1 dokončený." & vbNový riadok & „Kliknutím na tlačidlo OK spustíte krok 2.“, „Krok 1 z 5“Koniec pod |
Všimnite si toho, že na spájanie textu používame symbol &. Viac informácií o používaní & s textom a ďalších možnostiach vkladania zlomov riadkov sa dozviete v našom článku o spájaní textu.
Ikony MsgBox
VBA vám dáva možnosť pridať do schránok so správami jednu zo štyroch vopred pripravených ikon:
Ikona konštantná | Ikona |
---|---|
vbInformácie | |
vbKritické | |
vbQuestion | |
vbVyhlásenie |
Konštanta ikon by mala byť umiestnená v argumente tlačidla:
123 | Sub MsgBoxQuestionIcon ()MsgBox „Príklad otázky“, vbQuestionKoniec pod |
Toto vygeneruje predvolené okno so správou „OK“ s ikonou otázky:
Všimnite si, ako vám pri písaní editor VBA zobrazí možnosti, ktoré máte k dispozícii:
Je to užitočné, pretože si nemusíte pamätať presnú syntax alebo názvy ikon alebo tlačidiel.
Teraz ukážeme každú ikonu poľa so správou:
Ikony MsgBox - informácie
123 | Sub MsgBoxInformationIcon ()MsgBox „Príklad informácií“, vbInformationKoniec pod |
Ikony MsgBox - kritické
123 | Sub MsgBoxCriticalIcon ()MsgBox „Kritický príklad“, vbCriticalKoniec pod |
Ikony MsgBox - otázka
123 | Sub MsgBoxQuestionIcon ()MsgBox „Príklad otázky“, vbQuestionKoniec pod |
Ikony MsgBox - výkričník
123 | Sub MsgBoxExclamationIcon ()MsgBox „Príklad výkričníka“, vbExclamationKoniec pod |
Ďalej budeme hovoriť o generovaní schránok správ s rôznym rozložením tlačidiel. Ak vyberiete iný typ poľa so správou, budete musieť za tlačidlá pridať typ ikony pomocou znamienka „+“:
123 | Sub MsgBoxQuestionIcon ()MsgBox „Chcete pokračovať?“, VbOKCancel + vbQuestionKoniec pod |
Premenné MsgBox
Doteraz sme pracovali predovšetkým s predvoleným oknom so správou „OK“. Okno so správou OK má iba jednu možnosť: Stlačením „OK“ kód pokračuje. Môžete však určiť aj ďalšie zoskupenia tlačidiel: OK / Zrušiť, Áno / Nie atď.
V takom prípade budete chcieť vykonať rôzne akcie podľa toho, aké tlačidlo stlačíte. Pozrime sa na príklad.
Tu je pole správy, ktoré vygenerujeme:
Toto je celý kód (ďalej ho rozoberieme):
123456789101112 | Sub MsgBoxVariable ()Dim odpoveď ako celé čísloanswer = MsgBox („Chcete pokračovať?“, vbQuestion + vbYesNo)Ak odpoveď = vbÁno PotomMsgBox „Áno“InakMsgBox „Nie“Koniec AkKoniec pod |
Najprv priradíme výstup schránky správ celočíselnej premennej.
123 | Dim odpoveď ako celé čísloanswer = MsgBox („Chcete pokračovať?“, vbQuestion + vbYesNo) |
Ďalej použijeme If-Else na určenie, čo robiť podľa toho, aké tlačidlo stlačíte:
12345 | Ak odpoveď = vbÁno PotomMsgBox „Áno“InakMsgBox „Nie“Koniec Ak |
Funkcia MsgBox vracia celočíselnú hodnotu (medzi 1-7), takže premennú definujeme ako celočíselný typ. Namiesto celočíselného čísla však môžete odkazovať na konštantu (napr. VbOK, vbCancel atď.). V tejto tabuľke nájdete všetky možnosti:
Tlačidlo | Konštantný | Hodnota |
---|---|---|
OK | vbOK | 1 |
Zrušiť | vbCancel | 2 |
Prerušiť | vbAbort | 3 |
Skúsiť znova | vbSkúsiť | 4 |
Ignorovať | vbIgnorovať | 5 |
Áno | vbÁno | 6 |
Nie | vbNo | 7 |
Teraz predvedieme každú skupinu tlačidiel:
Okno so správou - vbOKOnly
Toto je štandardná schránka správ VBA.
123456 | Sub MsgBox_OKOnly ()Dim odpoveď ako celé čísloanswer = MsgBox ("Príklad iba OK", vbOKOnly)Koniec pod |
OK Zrušiť pole so správou - vbOKCancel
123456789101112 | Sub MsgBox_OKCancel ()Dim odpoveď ako celé čísloanswer = MsgBox ("OK Zrušiť príklad", vbOKCancel)Ak odpoveď = vbOK PotomMsgBox „OK“InakMsgBox „Zrušiť“Koniec AkKoniec pod |
Áno Nie Pole so správou - vbYesNo
123456789101112 | Sub MsgBox_YesNo ()Dim odpoveď ako celé čísloanswer = MsgBox („Áno Nie Príklad“, vbYesNo)Ak odpoveď = vbÁno PotomMsgBox „Áno“InakMsgBox „Nie“Koniec AkKoniec pod |
Áno Nie Zrušiť pole so správou - vbYesNoCancel
1234567891011121314 | Sub MsgBox_YesNoCancel ()Dim odpoveď ako celé čísloanswer = MsgBox („Áno Nie Zrušiť príklad“, vbYesNoCancel)Ak odpoveď = vbÁno PotomMsgBox „Áno“ElseIf answer = vbNo PotomMsgBox „Nie“InakMsgBox „Zrušiť“Koniec AkKoniec pod |
Prerušiť Skúsiť znova Ignorovať pole so správou - vbAbortRetryIgnore
1234567891011121314 | Sub MsgBox_AbortRetryIgnore ()Dim odpoveď ako celé čísloanswer = MsgBox („Abort Retry Ignore Example“, vbAbortRetryIgnore)If answer = vbAbort ThenMsgBox „Prerušiť“ElseIf answer = vbSkúste to znovaMsgBox „Skúsiť znova“InakMsgBox „Ignorovať“Koniec AkKoniec pod |
Skúste znova zrušiť pole so správou - vbRetryCancel
123456789101112 | Sub MsgBox_RetryCancel ()Dim odpoveď ako celé čísloanswer = MsgBox ("Opakovať príklad zrušenia", vbRetryCancel)If answer = vbSkúste to znovaMsgBox „Skúsiť znova“InakMsgBox „Zrušiť“Koniec AkKoniec pod |
Príklady VBA MessageBoxu
Potvrdenie poľa so správou pred spustením makra
Tento kód pred volaním makra zobrazí pole Áno Nie. Ak kliknete na tlačidlo Áno, zavolá sa makro a ak na tlačidlo Nie, makro sa nespustí.
12345678 | Sub Msgbox_BeforeRunning ()Dim odpoveď ako celé čísloanswer = MsgBox („Chcete spustiť Macro1?“, vbQuestion + vbYesNo)If answer = vbYes Then Call Macro1Koniec pod |
Áno / Nie Pole so správou - Ukončiť pod
Tu s používateľom potvrdíme, či pokračovať v spustení makra. Ak kliknete na Nie, kód ukončí podsekciu, inak bude postup pokračovať.
12345678910 | Sub Msgbox_BeforeRunning ()Dim odpoveď ako celé čísloanswer = MsgBox („Chcete pokračovať?“, vbQuestion + vbYesNo)If answer = vbNo Then Exit Sub„Nejaký kódKoniec pod |
Pole správ VBA v programe Access VBA
Všetky vyššie uvedené príklady fungujú v programe Access VBA úplne rovnako ako v programe Excel VBA.