VBA MsgBox Ano / Ne | Jak vytvořit odpověď Ano / Ne?

Excel VBA MsgBox (Ano / Ne)

Ve VBA můžeme pomocí schránky pro zprávy vytvořit msgbox ano ne, který se používá k záznamu vstupu uživatele na základě kliknutí na ano nebo ne, syntaxe pro vytvoření zprávy ano ne je proměnná = MsgBox („Text“, vbQuestion + vbYesNo + vbDefaultButton2, „Název pole zprávy“), kde musí být proměnná deklarována jako celé číslo.

Často v kódování VBA musíme shromažďovat vstupní hodnoty od uživatelů k provedení nějakého úkolu a jeden z těchto úkolů ke shromažďování odpovědí Ano nebo Ne od uživatelů. Použitím metody VBA MsgBox Ano Ne můžeme napsat kód, abychom mohli v kódu pokračovat dále.

V určitých situacích možná budeme muset před uživatelem předložit odpověď Ano nebo Ne, abychom mohli odpovědět, a na základě této odpovědi můžeme skutečně spustit kód VBA.

Podívejte se například na níže uvedený obrázek MsgBoxu ve VBA.

Pokud uživatel řekne Ano, „můžeme napsat kód k provedení konkrétního úkolu“ a pokud uživatel řekne „Ne“, můžeme napsat kód k provedení další sady úkolů.

Jak pracovat s MsgBox Ano / Ne odpověď?

Tuto šablonu zprávy VBA Ano nebo Ne si můžete stáhnout zde - Šablona zprávy VBA Ano nebo Ne Šablona aplikace Excel

Příklad č. 1 - Kopírování a vkládání na základě odpovědi

Podívejte se například na níže uvedený kód.

Kód:

 Sub MessageBox_Yes_NO_Example1 () Dim AnswerYes As String Dim AnswerNo As String AnswerYes = MsgBox ("Chcete kopírovat?", VbQuestion + vbYesNo, "Uživatel Repsonse") Pokud AnswerYes = vbYes Pak Rozsah ("A1: A2"). Rozsah kopírování ("C1") Jinak rozsah ("A1: A2"). Rozsah kopírování ("E1") Konec Pokud Konec Sub 

Vysvětlení:

Výše uvedené deklarovalo proměnnou jako String, tj

 Tlumená odpověď Ano jako řetězec 

V dalším řádku jsme přidělili hodnotu prostřednictvím okna se zprávou s dotazem „Chcete kopírovat?“.

AnswerYes = MsgBox („Chcete kopírovat?“, VbQuestion + vbYesNo, „Uživatel Repsonse“)

Nyní příkaz IF vyhodnotí odpověď danou prostřednictvím okna se zprávou. Pokud je výsledkem pole se zprávou vbYes , zkopíruje se rozsah A1 až A2 a vloží se do buňky C1.

   If AnswerYes = vbYes Then Range ("A1: A2"). Copy Range ("C1")

Pokud je odpověď daná zprávou Ne, zkopíruje rozsah A1 do A2 a vloží se do buňky E1.

 Jiný rozsah („A1: A2“). Rozsah kopírování („E1“) Konec, pokud 

Dobře, teď jsem do buňky A1 a A2 zadal několik hodnot.

Nyní spustím kód pomocí klávesy F5 nebo prostřednictvím možnosti spuštění, přede mnou se objeví okno se zprávou a požádá o mou odpověď.

Pokud kliknu na Ano, zkopíruje se rozsah A1 do A2 a vloží se do buňky C1. Nyní kliknu na Ano a uvidím výsledek.

Provedl tedy přiřazený úkol, pokud je odpověď ANO.

Nyní znovu spustím kód.

Tentokrát vyberu Ne a uvidím, co se stane.

Ano, provedl úkol přiřazený v kódu, tj

 Jiný rozsah („A1: A2“). Rozsah kopírování („E1“)

Příklad č. 2 - Skrýt a skrýt listy na základě odpovědi

Níže uvedený kód skryje všechny listy kromě aktivního listu, pokud je odpověď ano.

Kód:

 Sub HideAll () Dim odpověď jako řetězec Dim Ws jako list odpověď = MsgBox ("Chcete skrýt vše?", VbQuestion + vbYesNo, "skrýt") Pokud odpověď = vbYes pak pro každou Ws v ActiveWorkbook.Worksheets Pokud Ws.Name ActiveSheet.Name Then Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Answer = vbNo Then MsgBox "Vybrali jste, že nechcete skrýt listy", vbInformation, "No Hide" End If End Sub 

Výše uvedený kód skryje všechny listy kromě listu, ve kterém se právě nacházíme, pokud je odpověď v okně se zprávou ANO.

Pokud je odpověď z okna se zprávou NE, zobrazí se okno se zprávou „Vybrali jste, že nechcete listy skrýt“.

Podobně níže uvedený kód odkryje list, pokud je odpověď Ano.

Kód:

 Sub UnHideAll () Dim Answer as String Dim Ws As Worksheet Answer = MsgBox ("Chcete zobrazit všechny?", VbQuestion + vbYesNo, "Skrýt") If Answer = vbYes Then For Ws In ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Answer = vbNo Then MsgBox "Vybrali jste, aby se listy neskrývaly", vbInformation, "No Hide" End If End Sub 

Funguje to přesně stejně jako kód skrýt list, pokud ano, bude znovu zobrazen, pokud ne, nebude zobrazen.


$config[zx-auto] not found$config[zx-overlay] not found