Příkaz MsgBox
v jazyce Visual Basic for Applications (VBA) v aplikaci Microsoft Excel slouží k zobrazení jednoduchého dialogového okna s upozorněním, otázkou nebo zprávou pro uživatele. Syntaxe tohoto příkazu je následující:
MsgBox(prompt[, buttons][, title][, helpfile, context])
Kde:
prompt
: (povinný) Jedná se o textový řetězec, který se zobrazí uvnitř dialogového okna. Může obsahovat zprávu nebo otázku, kterou chcete uživateli sdělit.buttons
: (volitelný) Specifikuje, jaké tlačítka budou v dialogovém okně zobrazena. Může být kombinace některých z následujících hodnot:vbOKOnly
(0) – Zobrazí pouze tlačítko „OK“.vbOKCancel
(1) – Zobrazí tlačítka „OK“ a „Storno“.vbAbortRetryIgnore
(2) – Zobrazí tlačítka „Přerušit“, „Opakovat“ a „Ignorovat“.vbYesNoCancel
(3) – Zobrazí tlačítka „Ano“, „Ne“ a „Storno“.vbYesNo
(4) – Zobrazí tlačítka „Ano“ a „Ne“.vbRetryCancel
(5) – Zobrazí tlačítka „Opakovat“ a „Storno“.title
: (volitelný) Textový řetězec, který se zobrazí na liště okna dialogu. Může sloužit jako nadpis dialogového okna.helpfile
: (volitelný) Cesta k souboru nápovědy, který se otevře, pokud uživatel klepne na tlačítko nápovědy.context
: (volitelný) Číselná hodnota určující ID kontextu v nápovědě, který se otevře, pokud uživatel klepne na tlačítko nápovědy.
Zde jsou některé příklady použití příkazu MsgBox
:
- Základní zpráva s tlačítkem OK:
Sub ZobrazZpravu()
MsgBox "Vítejte v Excelu!", vbOKOnly, "Vítejte"
End Sub
- Zobrazení otázky s možnostmi Ano/Ne:
Sub Otazka()
Dim odpoved As VbMsgBoxResult
odpoved = MsgBox("Chcete uložit změny?", vbYesNo, "Uložit změny")
If odpoved = vbYes Then
' Uživatel klikl na tlačítko Ano
' Zde můžete přidat kód pro uložení změn.
Else
' Uživatel klikl na tlačítko Ne
' Zde můžete přidat kód pro ignorování změn nebo další akce.
End If
End Sub
- Upozornění na kritickou chybu s tlačítkem Opakovat/Storno:
Sub Chyba()
Dim vysledek As VbMsgBoxResult
vysledek = MsgBox("Nastala kritická chyba. Chcete opakovat operaci?", vbCritical + vbRetryCancel, "Chyba")
If vysledek = vbRetry Then
' Uživatel klikl na tlačítko Opakovat
' Zde můžete přidat kód pro opakování operace.
Else
' Uživatel klikl na tlačítko Storno nebo zavřel dialogové okno
' Zde můžete přidat kód pro ukončení operace nebo další akce.
End If
End Sub
Tyto příklady ukazují, jak můžete použít příkaz MsgBox
k interakci s uživatelem a zobrazování různých typů zpráv a otázek v Excelu pomocí VBA.
Praktický příklad kódu, který vznikl na základě předchozího článku https://cz-pro.cz/jak-uspesne-resit-problemy-osobni-pruvodce-pro-efektivni-reseni-kazdodennich-vyzev/
Sub Msgbox_FungujeTo()
Dim resp As VbMsgBoxResult
resp = MsgBox("Funguje ten krám? ", vbYesNo + vbQuestion)
If resp = vbYes Then
MsgBox "Nešťourej se v tom", vbExclamation
Call Msgbox_NeniCoResit
ElseIf resp = vbNo Then
resp = MsgBox("Šťoural jsi se v něm?", vbYesNo + vbQuestion)
If resp = vbYes Then
resp = MsgBox("Jsi nemehlo!!!", vbInformation)
resp = MsgBox("Viděl tě někdo?", vbYesNo + vbQuestion)
If resp = vbYes Then
Call Msgbox_JsiBlb
ElseIf resp = vbNo Then
MsgBox "Ututlej to", vbInformation
resp = MsgBox("Povedlo se?", vbYesNo + vbQuestion)
If resp = vbYes Then
Call Msgbox_NeniCoResit
ElseIf resp = vbNo Then
Call Msgbox_JsiBlb
End If
End If
ElseIf resp = vbNo Then
resp = MsgBox("Schytáš to?", vbYesNo + vbQuestion)
If resp = vbYes Then
Call Msgbox_JsiBlb
ElseIf resp = vbNo Then
MsgBox "Nech to plavat", vbInformation
Call Msgbox_NeniCoResit
End If
End If
End If
End Sub
Sub Msgbox_NeniCoResit()
MsgBox "Není co řešit", vbInformation
End Sub
Sub Msgbox_JsiBlb()
MsgBox "Jsi BLB!!!", vbCritical
resp = MsgBox("Máš to na koho svést? ", vbYesNo + vbQuestion)
If resp = vbYes Then
Call Msgbox_NeniCoResit
ElseIf resp = vbNo Then
Call Msgbox_JsiBlb
End If
End Sub