VBA MsgBox (Tak / Nie)

Excel VBA MsgBox (Tak / Nie)

W VBA , korzystając z okna komunikatu, możemy utworzyć tak nie msgbox, który jest używany do rejestrowania danych wejściowych użytkownika na podstawie kliknięcia tak lub nie, składnia do utworzenia okna komunikatu tak nie jest następująca zmienna = MsgBox ("Tekst", vbQuestion + vbYesNo + vbDefaultButton2, „Message Box Title”), gdzie zmienna musi być zadeklarowana jako liczba całkowita.

Często w kodowaniu VBA musimy zebrać wartości wejściowe od użytkowników, aby wykonać jakieś zadanie, a jedno z takich zadań, aby zebrać odpowiedzi tak lub nie od użytkowników. Za pomocą metody VBA MsgBox Yes No możemy napisać kod, aby przejść dalej w kodzie.

W niektórych sytuacjach może zaistnieć potrzeba przedstawienia opcji Tak lub Nie przed użytkownikiem, aby udzielić odpowiedzi i na podstawie tej odpowiedzi możemy faktycznie uruchomić kod VBA.

Na przykład spójrz na poniższy obraz MsgBox w VBA.

Jeśli użytkownik powie „tak” „możemy napisać kod do wykonania określonego zadania”, a jeśli użytkownik powie „nie”, możemy napisać kod do wykonania innego zestawu zadań.

Jak pracować z MsgBox Odpowiedź Tak / Nie?

Możesz pobrać tę skrzynkę komunikatów VBA tak lub nie szablon programu Excel tutaj - okno wiadomości VBA tak lub nie szablon programu Excel

Przykład 1 - kopiowanie i wklejanie na podstawie odpowiedzi

Na przykład spójrz na poniższy kod.

Kod:

 Sub MessageBox_Yes_NO_Example1 () Dim AnswerYes As String Dim AnswerNo As String AnswerYes = MsgBox ("Czy chcesz skopiować?", VbQuestion + vbYesNo, "User Repsonse") If AnswerYes = vbYes Then Range ("A1: A2"). Copy Range („C1”) W innym przypadku zakres („A1: A2”). Kopiuj zakres („E1”) Koniec, jeśli koniec podrzędny 

Wyjaśnienie:

Powyższe zadeklarowało zmienną jako String ie

 Ściemniona odpowiedź Tak jako ciąg 

W następnym wierszu przypisaliśmy wartość za pośrednictwem okna komunikatu z pytaniem „Czy chcesz skopiować?”.

AnswerYes = MsgBox („Czy chcesz skopiować?”, VbQuestion + vbYesNo, „User Repsonse”)

Teraz instrukcja IF ocenia odpowiedź podaną w oknie komunikatu. Jeśli wynik okna komunikatu to vbYes , skopiuje zakres od A1 do A2 i wklei do komórki C1.

   Jeśli AnswerYes = vbYes Then Range („A1: A2”). Kopiuj zakres („C1”)

Jeśli odpowiedź podana w oknie komunikatu to Nie, skopiuje zakres od A1 do A2 i wklei do komórki E1.

 W przeciwnym razie zakres („A1: A2”). Kopiuj zakres („E1”) Zakończ, jeśli 

Ok, wprowadziłem teraz kilka wartości w komórkach A1 i A2.

Teraz uruchomię kod za pomocą klawisza F5 lub przez opcję run, pojawi się okno komunikatu z prośbą o odpowiedź.

Jeśli kliknę Tak, skopiuje zakres od A1 do A2 i wklei do komórki C1. Teraz kliknę Tak i zobaczę wynik.

Więc wykonał przypisane zadanie, jeśli odpowiedź brzmi TAK.

Teraz ponownie uruchomię kod.

Tym razem wybiorę Nie i zobaczę, co się stanie.

Tak, wykonał zadanie przypisane w kodzie tj

 W innym przypadku zakres („A1: A2”). Kopiuj zakres („E1”)

Przykład # 2 - Ukryj i odkryj arkusze na podstawie odpowiedzi

Poniższy kod spowoduje ukrycie wszystkich arkuszy z wyjątkiem aktywnego arkusza, jeśli odpowiedź brzmi tak.

Kod:

 Sub HideAll () Dim Answer As String Dim Ws As Worksheet Answer = MsgBox ("Czy chcesz ukryć wszystko?", VbQuestion + vbYesNo, "Hide") If Answer = vbYes Then For Each Ws In ActiveWorkbook.Worksheets If Ws.Name ActiveSheet.Name Then Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Answer = vbNo Then MsgBox "Wybrałeś, aby nie ukrywać arkuszy", vbInformation, "No Hide" End If End Sub 

Powyższy kod ukryje wszystkie arkusze z wyjątkiem arkusza, w którym teraz jesteśmy, jeśli odpowiedź z okna komunikatu to TAK.

Jeśli odpowiedź z okna komunikatu brzmi NIE, zostanie wyświetlone okno komunikatu „Wybrałeś, aby nie ukrywać arkuszy”.

Podobnie, poniższy kod pokaże arkusz, jeśli odpowiedź brzmi tak.

Kod:

 Sub UnHideAll () Dim Answer As String Dim Ws As Worksheet Answer = MsgBox ("Czy chcesz odkryć wszystko?", VbQuestion + vbYesNo, "Hide") If Answer = vbYes Then For Each Ws In ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Answer = vbNo Then MsgBox "Wybrałeś, aby nie odkrywać arkuszy", vbInformation, "No Hide" End If End Sub 

Działa to dokładnie tak samo jak kod ukrywania arkusza, jeśli tak, to pokaże, jeśli nie, to nie pokaże.