Excel VBA MsgBox (skrzynka wiadomości) - wszystko, co musisz wiedzieć!

W Excel VBA możesz użyć funkcji MsgBox, aby wyświetlić okno komunikatu (jak pokazano poniżej):

MsgBox to nic innego jak okno dialogowe, którego można użyć do poinformowania użytkowników poprzez wyświetlenie niestandardowego komunikatu lub uzyskanie podstawowych danych wejściowych (takich jak Tak/Nie lub OK/Anuluj).

Gdy wyświetlane jest okno dialogowe MsgBox, kod VBA jest zatrzymany. Musisz kliknąć dowolny przycisk w MsgBox, aby uruchomić pozostały kod VBA.

Uwaga: W tym samouczku będę używał zamiennie słów „message box” i „MsgBox”. Podczas pracy z Excel VBA zawsze musisz używać MsgBox.

Anatomia VBA MsgBox w Excelu

Okno komunikatu składa się z następujących części:

  1. Tytuł: Jest to zwykle używane do wyświetlania treści okna komunikatu. Jeśli nic nie określisz, wyświetli nazwę aplikacji - w tym przypadku Microsoft Excel.
  2. Podpowiedź: To jest wiadomość, którą chcesz wyświetlić. Możesz użyć tego miejsca, aby napisać kilka wierszy lub nawet wyświetlić tutaj tabele/dane.
  3. Guziki): Chociaż OK jest przyciskiem domyślnym, można go dostosować, aby wyświetlać przyciski, takie jak Tak/Nie, Tak/Nie/Anuluj, Ponów/Ignoruj ​​itp.
  4. Zamknij ikonę: Możesz zamknąć okno wiadomości, klikając ikonę zamykania.

Składnia funkcji VBA MsgBox

Jak wspomniałem, MsgBox jest funkcją i ma składnię podobną do innych funkcji VBA.

MsgBox( monit [, przyciski ] [, tytuł ] [, plik pomocy, kontekst ] )

  • podpowiedź - To wymagany argument. Wyświetla komunikat, który widzisz w MsgBox. W naszym przykładzie tekst „This is a sample MsgBox” to „monit”. Możesz użyć do 1024 znaków w podpowiedzi, a także użyć go do wyświetlenia wartości zmiennych. Jeśli chcesz wyświetlić monit, który ma wiele wierszy, możesz to zrobić również (więcej na ten temat w dalszej części tego samouczka).
  • [guziki] - Określa, jakie przyciski i ikony są wyświetlane w MsgBox. Na przykład, jeśli użyję vbOkOnly, pokaże tylko przycisk OK, a jeśli użyję vbOKCancel, pokaże zarówno przyciski OK, jak i Anuluj. W dalszej części tego samouczka omówię różne rodzaje przycisków.
  • [tytuł] - Tutaj możesz określić, jaki podpis chcesz w oknie dialogowym wiadomości. Jest to wyświetlane na pasku tytułu MsgBox. Jeśli nic nie określisz, wyświetli nazwę aplikacji.
  • [plik pomocy] - Możesz określić plik pomocy, do którego można uzyskać dostęp, gdy użytkownik kliknie przycisk Pomoc. Przycisk pomocy pojawi się tylko wtedy, gdy użyjesz dla niego kodu przycisku. Jeśli korzystasz z pliku pomocy, musisz również określić argument kontekstu.
  • [kontekst] - Jest to wyrażenie liczbowe będące numerem kontekstu Pomocy przypisanym do odpowiedniego tematu Pomocy.

Jeśli nie znasz koncepcji Msgbox, możesz zignorować argumenty [helpfile] i [context]. Rzadko widziałem, jak są używane.

Uwaga: Wszystkie argumenty w nawiasach kwadratowych są opcjonalne. Tylko argument „podpowiedź” jest obowiązkowy.

Stałe przycisków programu Excel VBA MsgBox (przykłady)

W tej sekcji omówię różne typy przycisków, których można używać z VBA MsgBox.

Zanim pokażę Ci kod VBA i wygląd MsgBox, oto tabela, która zawiera listę wszystkich różnych stałych przycisków, których możesz użyć.

Stała przycisku Opis
vbOKTylko Pokazuje tylko przycisk OK
vbOKAnuluj Pokazuje przyciski OK i Anuluj
vbAbortRetryIgnoruj Pokazuje przyciski Przerwij, Ponów i Ignoruj
vbTakNie Pokazuje przyciski Tak i Nie
vbTakNieAnuluj Pokazuje przyciski Tak, Nie i Anuluj
vbRetryAnuluj Pokazuje przyciski Ponów i Anuluj
Przycisk pomocy vbMsgBox Wyświetla przycisk Pomoc. Aby to zadziałało, musisz użyć argumentów pomocy i kontekstu w funkcji MsgBox
vbDefaultButton1 Ustawia pierwszy przycisk jako domyślny. Możesz zmienić numer, aby zmienić domyślny przycisk. Na przykład vbDefaultButton2 ustawia drugi przycisk jako domyślny

Uwaga: Przeglądając przykłady tworzenia różnych przycisków, możesz się zastanawiać, jaki jest sens posiadania tych przycisków, jeśli nie ma to żadnego wpływu na kod.

To robi! Na podstawie wyboru możesz zakodować to, co chcesz, aby kod robił. Na przykład, jeśli wybierzesz OK, kod powinien być kontynuowany, a jeśli klikniesz Anuluj, kod powinien się zatrzymać. Można to zrobić za pomocą zmiennych i przypisując wartość pola komunikatu do zmiennej. Omówimy to w dalszej części tego samouczka.

Teraz spójrzmy na kilka przykładów, jak różne przyciski mogą być wyświetlane w MsgBox i jak to wygląda.

Przyciski MsgBox - vbOKOnly (domyślnie)

Jeśli użyjesz tylko monitu i nie określisz żadnego z argumentów, otrzymasz domyślne okno komunikatu, jak pokazano poniżej:

Poniżej znajduje się kod, który spowoduje wyświetlenie tego okna wiadomości:

Sub DefaultMsgBox() MsgBox "To jest przykładowe pudełko" End Sub

Zwróć uwagę, że ciąg tekstowy musi być w podwójnych cudzysłowach.

Możesz także użyć stałej przycisku vbOKOnly, ale nawet jeśli niczego nie określisz, jest ona przyjmowana jako domyślna.

Przyciski MsgBox - OK i Anuluj

Jeśli chcesz wyświetlić tylko przycisk OK i Anuluj, musisz użyć stałej vbOKCancel.

Sub MsgBoxOKCancel() MsgBox "Chcesz kontynuować?", vbOKCancel Koniec Sub

Przyciski MsgBox - Przerwij, ponów próbę i ignoruj

Możesz użyć stałej „vbAbortRetryIgnore”, aby wyświetlić przyciski Przerwij, Ponów i Ignoruj.

Sub MsgBoxAbortRetryIgnore() MsgBox "Co chcesz zrobić?", vbAbortRetryIgnore End Sub

Przyciski MsgBox - Tak i Nie

Możesz użyć stałej „vbYesNo”, aby wyświetlić przyciski Yes i No.

Sub MsgBoxYesNo() MsgBox "Czy mamy przestać?", vbYesNo End Sub

Przyciski MsgBox - Tak, Nie i Anuluj

Możesz użyć stałej „vbYesNoCancel”, aby wyświetlić przyciski Yes, No i Cancel.

Sub MsgBoxYesNoCancel() MsgBox "Czy mamy przestać?", vbYesNoCancel End Sub

Przyciski MsgBox - ponów próbę i anuluj

Możesz użyć stałej „vbRetryCancel”, aby wyświetlić przyciski Ponów i Anuluj.

Sub MsgBoxRetryCancel() MsgBox "Co chcesz zrobić dalej?", vbRetryCancel End Sub

Przyciski MsgBox - Przycisk Pomoc

Możesz użyć stałej „vbMsgBoxHelpButton”, aby wyświetlić przycisk pomocy. Możesz go używać z innymi stałymi przyciskami.

Sub MsgBoxRetryHelp() MsgBox "Co chcesz zrobić dalej?", vbRetryCancel + vbMsgBoxHelpButton End Sub

Zauważ, że w tym kodzie połączyliśmy dwie różne stałe przycisku (vbRetryCancel + przycisk vbMsgBoxHelp). Pierwsza część pokazuje przyciski Ponów i Anuluj, a druga część pokazuje przycisk Pomoc.

Przyciski MsgBox - ustawianie przycisku domyślnego

Możesz użyć stałej „vbDefaultButton1”, aby ustawić pierwszy przycisk jako domyślny. Oznacza to, że przycisk jest już wybrany i jeśli naciśniesz enter, wykona ten przycisk.

Poniżej znajduje się kod, który ustawi drugi przycisk (przycisk „Nie”) jako domyślny.

Sub MsgBoxOKCancel() MsgBox "Co chcesz dalej robić?", vbYesNoCancel + vbDefaultButton2 End Sub

W większości przypadków lewy przycisk jest przyciskiem domyślnym. Możesz wybrać inne przyciski za pomocą vbDefaultButton2, vbDefaultButton3 i vbDefaultButton4.

Stałe ikony programu Excel VBA MsgBox (przykłady)

Oprócz przycisków można również dostosować ikony wyświetlane w oknie dialogowym MsgBox. Na przykład możesz mieć czerwoną ikonę krytyczną lub niebieską ikonę informacyjną.

Poniżej znajduje się tabela zawierająca kod, który pokaże odpowiednią ikonę.

Ikona Stała Opis
vbKrytyczny Pokazuje ikonę wiadomości krytycznej
vbpytanie Pokazuje ikonę pytania
vbWykrzyknik Pokazuje ikonę komunikatu ostrzegawczego
vbInformacje Pokazuje ikonę informacji

Ikony MsgBox - krytyczne

Jeśli chcesz wyświetlić ikonę krytyczną w MsgBox, użyj stałej vbCritical. Możesz użyć tego wraz z innymi stałymi przycisków (wstawiając znak + między kodami).

Na przykład poniżej znajduje się kod, który pokaże domyślny przycisk OK z ikoną krytyczną.

Sub MsgBoxCriticalIcon() MsgBox "To jest przykładowe pudełko", vbCritical End Sub

Jeśli chcesz wyświetlić ikonę krytyczną z przyciskami Tak i Nie, użyj następującego kodu:

Sub MsgBoxCriticalIcon() MsgBox "To jest przykładowe pudełko", vbYesNo + vbCritical End Sub

Ikony MsgBox - Pytanie

Jeśli chcesz wyświetlić ikonę krytyczną w swoim MsgBox, użyj stałej vbQuestion.

Sub MsgBoxQuestionIcon() MsgBox "To jest przykładowe pudełko", vbYesNo + vbQuestion End Sub

Ikony MsgBox - wykrzyknik

Jeśli chcesz wyświetlić ikonę wykrzyknika w swoim MsgBox, użyj stałej vbExclamation.

Sub MsgBoxExclamationIcon() MsgBox "To jest przykładowe pudełko", vbYesNo + vbExclamation End Sub

Ikony MsgBox - Informacje

Jeśli chcesz wyświetlić ikonę informacyjną w swoim MsgBox, użyj stałej vbInformation.

Sub MsgBoxInformationIcon() MsgBox "To jest przykładowe pudełko", vbYesNo + vbInformation End Sub

Dostosowywanie tytułu i monitu w MsgBox

Korzystając z MsgBox, możesz dostosować tytuł i komunikaty podpowiedzi.

Do tej pory przykład, który widzieliśmy, używał Microsoft Excel jako tytułu. Jeśli nie podasz argumentu title, MsgBox automatycznie użyje tytułu aplikacji (w tym przypadku był to Microsoft Excel).

Możesz dostosować tytuł, określając go w kodzie, jak pokazano poniżej:

Sub MsgBoxInformationIcon() MsgBox "Czy chcesz kontynuować?", vbYesNo + vbQuestion, "Krok 1 z 3" End Sub

Podobnie możesz również dostosować komunikat zachęty.

Możesz także dodać podziały wierszy w komunikacie zachęty.

W poniższym kodzie dodałem łamanie linii za pomocą „vbNewLine”.

Sub MsgBoxInformationIcon() MsgBox "Czy chcesz kontynuować?" & vbNewLine & "Kliknij Tak, aby kontynuować", vbYesNo + vbQuestion, "Krok 1 z 3" End Sub

Możesz także użyć znaku powrotu karetki - Chr(13) - lub przesunięcia wiersza - Chr(10), aby wstawić nowy wiersz w komunikacie zachęty.

Zauważ, że możesz dodać nowy wiersz tylko do komunikatu, a nie do tytułu.

Przypisywanie wartości MsgBox do zmiennej

Do tej pory widzieliśmy przykłady, w których utworzyliśmy okna wiadomości i dostosowaliśmy przyciski, ikony, tytuł i monit.

Jednak kliknięcie przycisku nic nie dało.

Dzięki funkcji MsgBox w programie Excel możesz zdecydować, co chcesz zrobić, gdy użytkownik kliknie określony przycisk. A jest to możliwe, ponieważ każdy przycisk ma przypisaną wartość.

Jeśli więc kliknę przycisk Tak, funkcja MsgBox zwróci wartość (6 lub stałą vbYes), której mogę użyć w swoim kodzie. Podobnie, jeśli użytkownik wybierze przycisk No, zwraca inną wartość ((7 lub stała vbNo)), której mogę użyć w kodzie.

Poniżej znajduje się tabela przedstawiająca dokładne wartości i stałą zwracaną przez funkcję MsgBox. Nie musisz ich zapamiętywać, po prostu bądź tego świadomy i możesz używać stałych, które są łatwiejsze w użyciu.

Kliknięty przycisk Stały Wartość
Ok vbOk 1
anulować vbAnuluj 2
Anulować vbAbort 3
Spróbować ponownie vbRetry 4
Ignorować vbIgnoruj 5
TAk vbTak 6
Nie vbNo 7

Zobaczmy teraz, jak możemy kontrolować kod makra VBA na podstawie tego, jaki przycisk kliknie użytkownik.

W poniższym kodzie, jeśli użytkownik kliknie Tak, zostanie wyświetlony komunikat „Kliknąłeś Tak”, a jeśli użytkownik kliknie Nie, zostanie wyświetlony komunikat „Kliknąłeś Nie”.

Sub MsgBoxInformationIcon() Result = MsgBox("Chcesz kontynuować?", vbYesNo + vbQuestion) If Result = vbYes Then MsgBox "Kliknąłeś Yes" Else: MsgBox "Kliknąłeś No" End If End Sub

W powyższym kodzie przypisałem wartość funkcji MsgBox do zmiennej Result. Po kliknięciu przycisku Tak zmienna Result otrzymuje stałą vbYes (lub liczbę 6) a po kliknięciu Nie zmienna Result otrzymuje stałą vbNo (lub liczbę 7).

Następnie użyłem konstrukcji If Then Else, aby sprawdzić, czy zmienna Result zawiera wartość vbYes. Jeśli tak, wyświetla monit „Kliknąłeś tak”, w przeciwnym razie wyświetla „Kliknąłeś nie”.

Możesz użyć tej samej koncepcji, aby uruchomić kod, jeśli użytkownik kliknie Tak i wyjdzie z subskrypcji, gdy kliknie Nie.

Uwaga: Kiedy przypisujesz wyjście MsgBox do zmiennej, musisz umieścić argumenty funkcji MsgBox w nawiasach. Na przykład w linii Wynik = MsgBox(„Czy chcesz kontynuować?”, vbYesNo + vbQuestion), widać, że argumenty są w nawiasach.

Jeśli chcesz dalej zagłębić się w funkcję Message Box, oto oficjalny dokument na ten temat.

Możesz również polubić następujące samouczki Excel VBA:

  • Funkcja podziału Excela VBA.
  • Funkcja Excel VBA InStr.
  • Praca z komórkami i zakresami w Excel VBA.
  • Praca z Arkuszami w VBA.
  • Praca ze skoroszytami w VBA.
  • Korzystanie z pętli w Excel VBA.
  • Zrozumienie typów danych Excel VBA (zmienne i stałe)
  • Jak tworzyć i używać skoroszytu makr osobistych w programie Excel.
  • Przydatne przykłady kodu makr programu Excel.
  • Używanie For Next Loop w Excel VBA.
  • Wydarzenia Excel VBA - łatwy (i kompletny) przewodnik.
  • Jak uruchomić makro w programie Excel - kompletny przewodnik krok po kroku.
  • Jak utworzyć i używać dodatku programu Excel.

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave