Přeskočit navigaci | Přeskočit na novinky

Jste zde: Úvodní stránka » excel » vba » ms-excel-vba-msg-box-dialogove-okno

MsgBox - Dialogový box

... nejen pro zobrazovaní hlášek programu ...

Proč dialogové boxy?

Při programování se občas hodí dostat od uživatelé odpověď (opravdu ten soubor chcete smazat?), upozornit ho na problematický stav (nelze se připojit na externí tiskárnu) připadně upozornit na nějakou kriticnou chybu. K tomu slouží dialogová okna, která se dají jednoduše využít ve Visual Basicu, který je součásti MS Excel.

Trocha teorie

MsgBox - Zobrazí dialogovou zprávu. Zobrazené okno čeká dokud uživatel neklepne na tlačítko. Poté se vrací hodnota typu Integer určující tlačítko, na které uživatel klikl.

Syntaxe
MsgBox(prompt[, buttons] [, title] [, helpfile, context])

Jednotlivé argumenty:

  • Prompt - Povinný. Zobrazí se jeko zpráva. Délka max. 1024 znaků. Text se dá rozdělit pomocí (Chr(13) & Chr(10)
  • Buttons - Nepovinné číslo, které představuje počet a typ tlačítek zobrazených na dialogovém okně. Pokud se neuvede je jeho hodnota 0. Viz popis dále.
  • Title - Nepovinné. Text, který se zobrazí v záhlaví dialogového okan. Pokud nebude uveden, bude v záhlaví jméno aplikace.
  • Helpfile - Nepoviné. Název souboru, který obsahuje text nápovědy k dialogu. Tj. musí být určen i context (ať se ví která nápověda bude zobrazena)
  • Context - Nepoviné. Číselný výraz určující číslo kontextové nápovědy (tj. musí být určen také helpfile).

Buttons skládá se ze čtyř skupin:

  1. (0–5) popisuje počet a typ tlačítek zobrazených v dialogu
  2. (16, 32, 48, 64) určuje styl ikony
  3. (0, 256, 512) určuje výchozí tlačítko
  4. (0, 4096) určuje režim dialogu

V programu můžeme použít Konstanty (názvy) nebo Hodnoty (čísla). Viz příklady níže.

Buttons - programátorské nastavení:

Konstanta - Hodnota - Popis
  • Konstanta - Hodnota - Popis
  • vbOKOnly - 0 - Zobrazí pouze tlačítko OK. Platí i v případě pokud neuvedeme žádnou hodnotu. (viz příklad níže)
  • VbOKCancel - 1 - Zobrazí tlačítka OK a Storno.
  • VbAbortRetryIgnore - 2 - Zobrazí tlačítka Zpět, Znovu a Ignorovat.
  • VbYesNoCancel - 3 - Zobrazí tlačítka Ano, Ne a Storno.
  • VbYesNo - 4 - Zobrazí tlačítka Ano a Ne.
  • VbRetryCancel - 5 - Zobrazí tlačítka Znovu a Storno.
  • -------------------------------
  • VbCritical - 16 - Zobrazí ikonu Kritická zpráva.
  • VbQuestion - 32 - Zobrazí ikonu Varovný dotaz.
  • VbExclamation - 48 - Zobrazí ikonu Varovná zpráva.
  • VbInformation - 64 - Zobrazí ikonu Informační zpráva
  • -------------------------------
  • VbDefaultButton1 - 0 - Výchozí je první tlačítko
  • VbDefaultButton2 - 256 - Výchozí je druhé tlačítko
  • VbDefaultButton3 - 512 - Výchozí je třetí tlačítko
  • VbDefaultButton4 - 768 - Výchozí je čtvrté tlačítko
  • VbApplicationModal - 0 - Aplikační režim; uživatel musí před pokračováním další práce ve zvolené aplikaci odpovědět na zprávu
  • VbSystemModal - 4096 - Systémový režim; všechny aplikace jsou pozastaveny, dokud uživatel neodpoví na zobrazenou zprávu

Poznámka: K napsání textu bylo použito nápovědy z MS Excel.

Navratové hodnoty

pokud chceme dále spracovávat odpovědi uživatele jsou k dispozici návratové kody:

  • Konstanta - Hodnota - Popis
  • vbOK - 1 - OK
  • vbCancel - 2 - Storno
  • vbAbort - 3 - Zpět
  • vbRetry - 4 - Znovu
  • vbIgnore - 5 - Ignorovat
  • vbYes - 6 - Ano
  • vbNo - 7 - Ne

Poznámka: Ukázky využití je popsána v příkladě, níže prezentovaném.

Trocha praxe s MSG

... začneme od toho nejednodušího zobrazíme jednoduchou zprávu...

Příklad 1

Zobrazíme okno s textem: "Ahoj světe." Po kliku na tlačítko CommandButton3 se nám zobrazí požadované dialogové okno s textem.

Private Sub CommandButton1_Click()

Response = MsgBox("Ahoj světe!")

End Sub

Výsledek

Excel - 

msg-box

Příklad 2

Zobrazíme okno s textem na dva řádky doplněné o tlačítka. Parametry tlačítek budeme inicializovat hodnotou.

Private Sub CommandButton2_Click()

Dim Msg
Msg = "Tak teď trochu složitější text" & Chr(13) _
& "Přes dva řádky s několika tlačítky..."
Style = 5

Response = MsgBox(Msg, Style, Title, Help, Ctxt)

End Sub

Výsledek

Excel - 

msg-box

Příklad 3

Takže v tomto článku nejsložitější ukázkový příklad, jednak si zobrazíme tlačítka, inicializovat je budeme Konstantou, přidáme Titulek okna, zobrazíme si ikonu a po stisku tlačítka zareagujeme na příslušnou odpověď. A bude "předvybráno" druhé tlačítko.

Private Sub CommandButton3_Click()

Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Chcete více peněz?"
Style = vbYesNo + vbCritical + vbDefaultButton2
Title = "Ukázkové okno"
Help = "DEMO.HLP" ' Definujeme soubor s helpem.
Ctxt = 1000 ' Definujeme řádek z helpu
Response = MsgBox(Msg, Style, Title, Help, Ctxt)

If Response = vbYes Then ' Pokud stiskneme ANO
Response = MsgBox("Stisknuto ANO!") ' Provede akci
Else ' Pokud stiskneme Ne.
Response = MsgBox("Jsi normální? Stisknul jsi NE!") ' Provede akci
End If

End Sub

Výsledek

Excel - 

msg-box

Ke stažení

Výše uvedené příklady nabízím ke stažení. msg box - MS Excel soubor ve 

formátu *.xls - pro vaše testy (velikost 44 kB)

Článek byl aktualizován: 18.01.2012 15:55


| tisk stránky TISK | nahoru NAHORU | |

Další články k tématu


Komentáře zatím nejsou

Můžete být prvními co zanechají smysluplný komentář.


Přidání nového komentáře




(vlož číslo šest)

Z bezpečnostních důvodu dočasně nemůžete použít HTML značky a URL. Děkuji za pochopení.
Děkuji, za Vaše komentáře.

Za obsah komentářů neodpovídám, jelikož jsou komentáře publikovány ihned po jejich napsání čtenářem. Toto nemohu nijak ovlivnit. Přesto si vyhrazuji možnost jakýkoli neslušný komentář smazat bez udání důvodu.



Nejnovější článek

Z článku o excel jsem jako poslední přidal či upravil článek 05.02.2012:
Je atribut souboru pouze pro čtení - VBA Excel.

Nejčtenější článek



Stránky o MS Office produktu společnosti Micosoft. Neslouží jako technická podpora.
XHTML 1.1 | CSS | Email na autora: lasak@centrum.cz | Copyright: Pavel a Danka 2006 - 2012 | 4239

Tento web zatím neprošel jazykovou korekturou.
Vlastní redakční systém pohánějící tento web je v BETA verzi, omluvte případné problémy.