Funkci VBA MsgBox pravděpodobně znáte. Funkce MsgBox, která přijímá níže uvedené argumenty, je užitečná pro zobrazení informací a získání jednoduchého uživatelského vstupu. Je schopen získat uživatelský vstup, protože je to funkce. Funkce, jak pravděpodobně víte, vrací hodnotu. V případě funkce MsgBox používá dialogové okno k získání hodnoty, kterou vrací. Pokračujte ve čtení, abyste viděli, jak přesně to funguje.
Argument |
Co to ovlivňuje |
Výzva |
Text Excel se zobrazí v okně zprávy |
Tlačítka |
Číslo, které určuje, která tlačítka (spolu s jakou ikonou) se
objeví v okně zprávy (volitelné) |
Titul |
Text, který se objeví v záhlaví okna se zprávou
(volitelné) |
Zde je zjednodušená verze syntaxe funkce MsgBox:
MsgBox(prompt[, buttons][, title])
Zobrazení jednoduché zprávy
Funkci MsgBox můžete použít dvěma způsoby:
-
Chcete-li jednoduše zobrazit zprávu uživateli: V tomto případě vás nezajímá výsledek vrácený funkcí.
-
Chcete-li získat odpověď od uživatele: V tomto případě vám záleží na výsledku vráceném funkcí. Výsledek závisí na tlačítku, na které uživatel klikne.
Pokud používáte funkci MsgBox samotnou, nevkládejte kolem argumentů závorky. Následující příklad jednoduše zobrazí zprávu a nevrátí výsledek. Když se zobrazí zpráva, kód se zastaví, dokud uživatel neklikne na OK.
Sub MsgBoxDemo()
MsgBox "Kliknutím na OK zahájíte tisk."
Listy („Výsledky“). Vytisknout
End Sub
Podívejte se níže, jak tato zpráva vypadá. V tomto případě se tisk zahájí, když uživatel klepne na OK. Všimli jste si, že nelze tisk zrušit? Pokračujte ve čtení, abyste zjistili, jak to opravit.
Jednoduchá schránka zpráv.
Získání odpovědi ze schránky zpráv
Pokud zobrazíte okno se zprávou, které obsahuje více než jen tlačítko OK, pravděpodobně budete chtít vědět, na které tlačítko uživatel klikne. Máš štěstí. Funkce MsgBox může vrátit hodnotu, která představuje, na které tlačítko bylo klepnuto. Výsledek funkce MsgBox můžete přiřadit proměnné.
V následujícím kódu jsou použity některé vestavěné konstanty, které usnadňují práci s hodnotami vrácenými MsgBox:
Sub GetAnswer()
Dim Ans As Long
Ans = MsgBox(“Zahájit tisk?”, vbYesNo)
Vyberte Případ Ans
Případ vbYes
ActiveSheet.PrintOut
Případ vbNo
MsgBox „Tisk zrušen“
Konec Vyberte
End Sub
Konstantní |
Hodnota |
Co to dělá |
vbOKOnly |
0 |
Zobrazí pouze tlačítko OK. |
vbOKZrušit |
1 |
Zobrazí tlačítka OK a Storno. |
vbAbortRetryIgnore |
2 |
Zobrazuje tlačítka Přerušit, Opakovat a Ignorovat. |
vbYesNoCancel |
3 |
Zobrazí tlačítka Ano, Ne a Zrušit. |
vbYesNo |
4 |
Zobrazuje tlačítka Ano a Ne. |
vbRetryCancel |
5 |
Zobrazí tlačítka Opakovat a Zrušit. |
vbCritical |
16 |
Zobrazí ikonu kritické zprávy. |
vbQuestion |
32 |
Zobrazí ikonu Varovný dotaz. |
vbExclamation |
48 |
Zobrazí ikonu varovné zprávy. |
vbInformace |
64 |
Zobrazí ikonu informační zprávy. |
vbDefaultButton1 |
0 |
První tlačítko je výchozí. |
vbDefaultButton2 |
256 |
Druhé tlačítko je výchozí. |
vbDefaultButton3 |
512 |
Třetí tlačítko je výchozí. |
vbDefaultButton4 |
768 |
Čtvrté tlačítko je výchozí. |
Podívejte se, jak to vypadá. Po provedení tohoto postupu je proměnné Ans přiřazena hodnota buď vbYes nebo vbNo, v závislosti na tom, na které tlačítko uživatel klepne. Příkaz Select Case používá hodnotu Ans k určení akce, kterou má kód provést.
Jednoduchá schránka se dvěma tlačítky.
Výsledek funkce MsgBox můžete také použít bez použití proměnné, jak ukazuje následující příklad:
Sub GetAnswer2()
Pokud MsgBox(“Zahájit tisk?”, vbYesNo) = vbYes Potom
' ...[kód, pokud klepnete na Ano]...
Jiný
' ...[kód, pokud nekliknete na Ano]...
End If
End Sub