Excel VBA a příkaz MsgBox

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:

  1. Základní zpráva s tlačítkem OK:
Sub ZobrazZpravu()
    MsgBox "Vítejte v Excelu!", vbOKOnly, "Vítejte"
End Sub
  1. 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
  1. 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

Diskuze

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Přejít nahoru