VBA MsgBox Да / Не - Как да създам отговор да / не?

Съдържание

Excel VBA MsgBox (Да / Не)

Във VBA , използвайки полето за съобщения, можем да създадем да не msgbox, който се използва за записване на потребителски въведения въз основа на щракване върху да или не, синтаксисът, за да направи полето за съобщение да не е както следва променлива = MsgBox („Текст“, vbQuestion + vbYesNo + vbDefaultButton2, „Заглавие на полето за съобщения”), където променливата трябва да бъде декларирана като цяло число.

Често при кодирането на VBA трябва да събираме входните стойности от потребителите, за да изпълняваме някои задачи и една от тези задачи да събираме отговора Да или Не от потребителите. Използвайки метод VBA MsgBox Да Не, можем да напишем кода, за да продължим по-нататък в кода.

В определени ситуации може да се наложи да представим опция Да или Не пред потребителя, за да даде своя отговор и въз основа на този отговор. Всъщност можем да стартираме кода на VBA.

Например погледнете изображението по-долу на MsgBox във VBA.

Ако потребителят каже Да, „можем да напишем код за изпълнение на конкретна задача“, а ако потребителят каже „Не“, можем да напишем код, за да изпълним друг набор от задачи.

Как да работя с MsgBox Да / Не Отговор?

Пример # 1 - Копиране и поставяне въз основа на отговор

Например погледнете кода по-долу.

Код:

Sub MessageBox_Yes_NO_Example1 () Dim AnswerYes As String Dim AnswerNo As String AnswerYes = MsgBox ("Искате ли да копирате?", VbQuestion + vbYesNo, "User Repsonse") Ако AnswerYes = vbYes Тогава диапазон ("A1: A2"). ("C1") Друг обхват ("A1: A2"). Обхват на копиране ("E1") End If End Sub

Обяснение:

Горното е декларирало променливата като String, т.е.

Затъмнен отговор Да като низ

В следващия ред сме присвоили стойността чрез поле за съобщение с въпрос „Искате ли да копирате?“.

AnswerYes = MsgBox ("Искате ли да копирате?", VbQuestion + vbYesNo, "User Repsonse")

Сега изявлението IF оценява отговора, даден през полето за съобщение. Ако резултатът от полето за съобщение е vbYes, тогава той ще копира диапазона A1 до A2 и ще постави в клетка C1.

 Ако AnswerYes = vbYes Тогава диапазон ("A1: A2"). Копиране на диапазон ("C1")

Ако отговорът, даден от полето за съобщение, е Не, тогава той ще копира диапазона А1 до А2 и ще постави в клетка Е1.

Else Range ("A1: A2"). Копиране на диапазон ("E1") End If

Добре, въведох няколко стойности в клетки A1 и A2 сега.

Сега ще стартирам кода, използвайки клавиша F5, или чрез опцията за изпълнение, пред мен ще се появи съобщение и ще поиска отговора ми.

Ако щракна върху Да, той ще копира диапазона А1 до А2 и ще го постави в клетка С1. Сега ще щракна върху Да и ще видя резултата.

Така че е изпълнил възложената задача, ако отговорът е ДА.

Сега отново ще стартирам кода.

Този път ще избера Не ​​и ще видя какво ще стане.

Да, изпълни задачата, зададена в кода, т.е.

Друг обхват ("A1: A2"). Обхват на копиране ("E1")

Пример # 2 - Скриване и показване на листове въз основа на отговора

Кодът по-долу ще скрие всички листове с изключение на активния лист, ако отговорът е да.

Код:

Sub HideAll () Dim Answer As String Dim Ws As Worksheet Answer = MsgBox ("Искате ли да скриете всички?", VbQuestion + vbYesNo, "Hide") Ако Answer = vbYes Тогава за всеки Ws в ActiveWorkbook.Worksheets If Ws.Name ActiveSheet.Name Тогава Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Answer = vbNo Тогава MsgBox "Избрахте да не скривате листовете", vbInformation, "No Hide" End If End Sub

Горният код ще скрие всички работни листове с изключение на листа, в който се намираме в момента, ако отговорът от полето за съобщение е ДА.

Ако отговорът от полето за съобщения е НЕ, той ще покаже полето за съобщение, казващо: „Избрахте да не скривате листовете.“

По същия начин кодът по-долу ще покаже листа, ако отговорът е Да.

Код:

Sub UnHideAll () Dim Answer As String Dim Ws As Worksheet Answer = MsgBox ("Искате ли да покажете всички?", VbQuestion + vbYesNo, "Hide") Ако Answer = vbYes Тогава за всеки Ws в ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Answer = vbNo Тогава MsgBox "Избрахте да не се разкриват листовете", vbInformation, "No Hide" End If End Sub

Това работи точно по същия начин като кода на скриващия лист; ако да, ще се покаже. Ако не, няма да се покаже.

Интересни статии...