Excel VBA MsgBox (okno se zprávou) - vše, co potřebujete vědět!

V aplikaci Excel VBA můžete použít funkci MsgBox k zobrazení pole se zprávou (jak je uvedeno níže):

MsgBox není nic jiného než dialogové okno, které můžete použít k informování uživatelů zobrazením vlastní zprávy nebo získání některých základních vstupů (například Ano/Ne nebo OK/Zrušit).

Zatímco je zobrazeno dialogové okno MsgBox, váš kód VBA je zastaven. Chcete -li spustit zbývající kód VBA, musíte kliknout na jakékoli tlačítko v MsgBox.

Poznámka: V tomto tutoriálu budu zaměnitelně používat pole se zprávou a MsgBox. Při práci s Excel VBA musíte vždy používat MsgBox.

Anatomie VBA MsgBox v aplikaci Excel

Okno se zprávou má následující části:

  1. Titul: Toto se obvykle používá k zobrazení toho, o čem je okno se zprávou. Pokud nic nezadáte, zobrazí se název aplikace - což je v tomto případě Microsoft Excel.
  2. Výzva: Toto je zpráva, kterou chcete zobrazit. Tento prostor můžete použít k napsání několika řádků nebo dokonce k zobrazení tabulek/dat zde.
  3. Tlačítka: Zatímco OK je výchozí tlačítko, můžete jej přizpůsobit tak, aby zobrazovalo tlačítka jako Ano/Ne, Ano/Ne/Zrušit, Opakovat/Ignorovat atd.
  4. Ikona Zavřít: Okno zpráv můžete zavřít kliknutím na ikonu zavřít.

Syntaxe funkce VBA MsgBox

Jak jsem zmínil, MsgBox je funkce a má syntaxi podobnou ostatním funkcím VBA.

MsgBox (výzva [, tlačítka] [, název] [, soubor nápovědy, kontext])

  • výzva - Toto je povinný argument. Zobrazí zprávu, kterou vidíte v MsgBox. V našem případě je „výzva“ text „Toto je ukázkový MsgBox“. Ve výzvě můžete použít až 1024 znaků a můžete ji také použít k zobrazení hodnot proměnných. V případě, že chcete zobrazit výzvu, která má více řádků, můžete to udělat také (více o tom později v tomto tutoriálu).
  • [tlačítka] - Určuje, jaká tlačítka a ikony se zobrazí v MsgBox. Pokud například použiji vbOkOnly, zobrazí pouze tlačítko OK a pokud použiji vbOKCancel, zobrazí tlačítka OK i Storno. Různým druhům tlačítek se budu věnovat později v tomto tutoriálu.
  • [titul] - Zde můžete v dialogovém okně zprávy určit, jaké titulky chcete. To se zobrazí v záhlaví MsgBox. Pokud nic nezadáte, zobrazí se název aplikace.
  • [soubor nápovědy] - Můžete určit soubor nápovědy, ke kterému se dostanete, když uživatel klikne na tlačítko Nápověda. Tlačítko nápovědy se zobrazí pouze tehdy, když pro něj použijete kód tlačítka. Pokud používáte soubor nápovědy, musíte také zadat kontextový argument.
  • [kontext] - Jedná se o číselný výraz, který je číslem kontextu nápovědy přiřazeným k příslušnému tématu nápovědy.

Pokud jste v konceptu Msgbox noví, můžete argumenty [helpfile] a [kontext] ignorovat. Málokdy jsem viděl, že by se tyto používaly.

Poznámka: Všechny argumenty v hranatých závorkách jsou volitelné. Povinný je pouze argument „prompt“.

Konstanty tlačítka Excel VBA MsgBox (příklady)

V této části se budu zabývat různými typy tlačítek, která můžete použít s VBA MsgBox.

Než vám ukážu kód VBA a jak vypadá MsgBox, zde je tabulka, která uvádí všechny různé konstanty tlačítek, které můžete použít.

Tlačítko konstantní Popis
vbOKOnly Zobrazuje pouze tlačítko OK
vbOKCancel Zobrazuje tlačítka OK a Storno
vbAbortRetryIgnore Zobrazuje tlačítka Přerušit, Opakovat a Ignorovat
vbAnoNe Zobrazuje tlačítka Ano a Ne
vbYesNoCancel Zobrazuje tlačítka Ano, Ne a Storno
vbRetryCancel Zobrazuje tlačítka Opakovat a Zrušit
vbMsgBoxHelpButton Zobrazí tlačítko Nápověda. Aby to fungovalo, musíte ve funkci MsgBox použít argumenty nápovědy a kontextu
vbDefaultButton1 Nastaví první tlačítko jako výchozí. Můžete změnit číslo a změnit výchozí tlačítko. Například vbDefaultButton2 nastaví druhé tlačítko jako výchozí

Poznámka: Při procházení příkladů vytváření různých tlačítek vás může zajímat, jaký má smysl mít tato tlačítka, pokud to nemá žádný vliv na kód.

To ano! Na základě výběru můžete kódovat, co má kód dělat. Pokud například vyberete OK, kód by měl pokračovat a pokud kliknete na Storno, kód by se měl zastavit. To lze provést pomocí proměnných a přiřazením hodnoty pole zpráv proměnné. Tomu se budeme věnovat v dalších částech tohoto tutoriálu.

Nyní se podívejme na několik příkladů, jak lze různá tlačítka zobrazit v MsgBoxu a jak to vypadá.

Tlačítka MsgBox - vbOKOnly (výchozí)

Pokud použijete pouze výzvu a nezadáte žádný z argumentů, dostanete výchozí okno se zprávou, jak je uvedeno níže:

Níže je kód, který poskytne toto okno se zprávou:

Sub DefaultMsgBox () MsgBox "Toto je ukázkové pole" End Sub

Všimněte si, že textový řetězec musí být v uvozovkách.

Můžete také použít konstantu tlačítek vbOKOnly, ale i když nic nezadáte, bude brána jako výchozí.

Tlačítka MsgBox - OK a zrušit

Pokud chcete zobrazit pouze tlačítko OK a tlačítko Storno, musíte použít konstantu vbOKCancel.

Sub MsgBoxOKCancel () MsgBox "Chcete pokračovat?", VbOKCancel Konec Sub

Tlačítka MsgBox - přerušení, opakování a ignorování

Pomocí konstanty „vbAbortRetryIgnore“ můžete zobrazit tlačítka Přerušit, Opakovat a Ignorovat.

Sub MsgBoxAbortRetryIgnore () MsgBox „Co chcete dělat?“, VbAbortRetryIgnore End Sub

Tlačítka MsgBox - ano i ne

Pomocí konstanty „vbYesNo“ můžete zobrazit tlačítka Ano a Ne.

Sub MsgBoxYesNo () MsgBox „Měli bychom přestat?“, VbYesNo End Sub

Tlačítka MsgBox - Ano, Ne a Zrušit

Pomocí konstanty „vbYesNoCancel“ můžete zobrazit tlačítka Ano, Ne a Zrušit.

Sub MsgBoxYesNoCancel () MsgBox „Měli bychom přestat?“, VbYesNoCancel End Sub

Tlačítka MsgBox - opakujte a zrušte

Pomocí konstanty „vbRetryCancel“ můžete zobrazit tlačítka Opakovat a Zrušit.

Sub MsgBoxRetryCancel () MsgBox „Co chcete dělat dál?“, VbRetryCancel Konec Sub

Tlačítka MsgBox - Tlačítko Nápověda

K zobrazení tlačítka nápovědy můžete použít konstantu „vbMsgBoxHelpButton“. Můžete jej použít s jinými konstantami tlačítek.

Sub MsgBoxRetryHelp () MsgBox „Co chcete dělat dál?“, VbRetryCancel + vbMsgBoxHelpButton End Sub

Všimněte si, že v tomto kódu jsme spojili dvě různé konstanty tlačítek (vbRetryCancel + vbMsgBoxHelpButton). První část zobrazuje tlačítka Opakovat a Zrušit a druhá část zobrazuje tlačítko Nápověda.

MsgBox Buttons - Nastavení výchozího tlačítka

Pomocí konstanty ‚vbDefaultButton1‘ můžete nastavit první tlačítko jako výchozí. To znamená, že tlačítko je již vybráno a pokud stisknete klávesu Enter, provede toto tlačítko.

Níže je kód, který nastaví druhé tlačítko (tlačítko „Ne“) jako výchozí.

Sub MsgBoxOKCancel () MsgBox „Co chcete dělat dál?“, VbYesNoCancel + vbDefaultButton2 End Sub

Ve většině případů je tlačítko úplně vlevo výchozím tlačítkem. Další tlačítka můžete zvolit pomocí vbDefaultButton2, vbDefaultButton3 a vbDefaultButton4.

Konstanty ikon aplikace Excel VBA MsgBox (příklady)

Kromě tlačítek můžete také přizpůsobit ikony zobrazené v dialogovém okně MsgBox. Můžete mít například červenou kritickou ikonu nebo modrou informační ikonu.

Níže je tabulka se seznamem kódu, který zobrazí odpovídající ikonu.

Ikona konstantní Popis
vbKritické Zobrazuje ikonu kritické zprávy
vbQuestion Zobrazuje ikonu otázky
vbExlamation Zobrazuje ikonu varovné zprávy
vbInformace Zobrazuje informační ikonu

Ikony MsgBox - kritické

Pokud chcete ve svém MsgBoxu zobrazit kritickou ikonu, použijte konstantu vbCritical. Můžete to použít společně s dalšími konstantami tlačítek (vložením znaku + mezi kódy).

Níže je například kód, který zobrazí výchozí tlačítko OK s kritickou ikonou.

Sub MsgBoxCriticalIcon () MsgBox „This is a sample box“, vbCritical End Sub

Pokud chcete zobrazit kritickou ikonu pomocí tlačítek Ano a Ne, použijte následující kód:

Sub MsgBoxCriticalIcon () MsgBox „This is a sample box“, vbYesNo + vbCritical End Sub

Ikony MsgBox - otázka

Pokud chcete ve svém MsgBoxu zobrazit kritickou ikonu, použijte konstantu vbQuestion.

Sub MsgBoxQuestionIcon () MsgBox „Toto je ukázkové pole“, vbYesNo + vbQuestion End Sub

Ikony MsgBox - vykřičník

Pokud chcete ve svém MsgBoxu zobrazit ikonu vykřičníku, použijte konstantu vbExclamation.

Sub MsgBoxExclamationIcon () MsgBox „This is a sample box“, vbYesNo + vbExclamation End Sub

Ikony MsgBox - informace

Pokud chcete ve svém MsgBoxu zobrazit informační ikonu, použijte konstantu vbInformation.

Sub MsgBoxInformationIcon () MsgBox „This is a sample box“, vbYesNo + vbInformation End Sub

Přizpůsobení názvu a výzvy v MsgBoxu

Při použití MsgBox můžete přizpůsobit název a zprávy s výzvou.

V příkladu, který jsme dosud viděli, byl jako nadpis použit Microsoft Excel. V případě, že nezadáte argument názvu, MsgBox automaticky použije název aplikace (což v tomto případě bylo Microsoft Excel).

Název můžete přizpůsobit jeho zadáním v kódu, jak je uvedeno níže:

Sub MsgBoxInformationIcon () MsgBox „Chcete pokračovat?“, VbYesNo + vbQuestion, „Krok 1 ze 3“ End Sub

Podobně můžete také přizpůsobit zprávu s výzvou.

Do zprávy s výzvou můžete také přidat konce řádků.

Do níže uvedeného kódu jsem přidal konec řádku pomocí ‘vbNewLine’.

Sub MsgBoxInformationIcon () MsgBox "Chcete pokračovat?" & vbNewLine & „Pokračujte kliknutím na tlačítko Ano“, vbYesNo + vbQuestion, „krok 1 ze 3“ End Sub

Můžete také použít návratový znak na konec řádku - Chr (13) - nebo řádek - Chr (10) pro vložení nového řádku do zprávy s výzvou.

Všimněte si toho, že do zprávy s výzvou můžete přidat pouze nový řádek, nikoli název.

Přiřazení hodnoty MsgBox proměnné

Doposud jsme viděli příklady, kdy jsme vytvořili pole zpráv a přizpůsobili tlačítka, ikony, nadpis a výzvu.

Kliknutí na tlačítko však nic neudělalo.

Pomocí funkce MsgBox v aplikaci Excel se můžete rozhodnout, co chcete dělat, když uživatel klikne na konkrétní tlačítko. A to je možné, protože ke každému tlačítku je přiřazena hodnota.

Pokud tedy kliknu na tlačítko Ano, funkce MsgBox vrátí hodnotu (6 nebo konstantu vbYes), kterou mohu použít ve svém kódu. Podobně, pokud uživatel vybere tlačítko Ne, vrátí jinou hodnotu ((7 nebo konstantní vbNo)), kterou mohu použít v kódu.

Níže je tabulka, která ukazuje přesné hodnoty a konstantu vrácenou funkcí MsgBox. Nemusíte si je pamatovat, stačí si to uvědomit a můžete použít konstanty, které se používají snadněji.

Tlačítko kliklo Konstantní Hodnota
OK vbOk 1
zrušení vbCancel 2
Přerušit vbAbort 3
Zkuste to znovu vb Opakujte 4
Ignorovat vb Ignorovat 5
Ano vbAno 6
Ne vbNo 7

Nyní se podívejme, jak můžeme ovládat kód makra VBA na základě toho, na jaké tlačítko uživatel klikne.

V níže uvedeném kódu, pokud uživatel klikne na Ano, zobrazí se zpráva „Klikli jste Ano“ a pokud uživatel klikne na Ne, zobrazí se „Klikli jste Ne“.

Sub MsgBoxInformationIcon () Výsledek = MsgBox („Chcete pokračovat?“, VbYesNo + vbQuestion) Pokud Výsledek = vbYes Pak MsgBox „Klikli jste Ano“ Jinak: MsgBox „Klikli jste Ne“ Konec Pokud Konec Sub

Ve výše uvedeném kódu jsem přiřazil hodnotu funkce MsgBox proměnné Result. Když kliknete na tlačítko Ano, proměnná Výsledek získá konstantu vbYes (nebo číslo 6) a když kliknete na Ne, proměnná Výsledek získá konstantu vbNo (nebo číslo 7).

Poté jsem pomocí konstrukce If Then Else zkontroloval, zda proměnná Result obsahuje hodnotu vbYes. Pokud ano, zobrazí se výzva „Klikli jste ano“, jinak se zobrazí „klikli jste ne“.

Stejný koncept můžete použít ke spuštění kódu, pokud uživatel klikne na Ano a ukončí dílčí část, když klikne na Ne.

Poznámka: Když přiřadíte výstup MsgBox proměnné, musíte argumenty funkce MsgBox vložit do závorek. Například v řádku Výsledek = MsgBox („Chcete pokračovat?“, VbYesNo + vbQuestion), můžete vidět, že argumenty jsou v závorkách.

Pokud se chcete dále hloubit do funkce Message Box, zde je oficiální dokument.

Také by se vám mohly líbit následující návody Excel VBA:

  • Funkce rozdělení VBA aplikace Excel.
  • Funkce Excel VBA InStr.
  • Práce s buňkami a rozsahy v aplikaci Excel VBA.
  • Práce s pracovními listy ve VBA.
  • Práce se sešity ve VBA.
  • Použití smyček v aplikaci Excel VBA.
  • Porozumění datovým typům aplikace Excel VBA (proměnné a konstanty)
  • Jak vytvořit a používat osobní sešit maker v aplikaci Excel.
  • Užitečné příklady kódu makra v Excelu.
  • Použití pro další smyčku v aplikaci Excel VBA.
  • Události aplikace Excel VBA - snadný (a kompletní) průvodce.
  • Jak spustit makro v aplikaci Excel-Kompletní průvodce krok za krokem.
  • Jak vytvořit a používat doplněk aplikace Excel.

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave