W tym samouczku omówiono, jak używać funkcji VBA MsgBox do wyświetlania użytkownikom okien komunikatów (w tym pola komunikatu YesNo). Możesz również zainteresować się naszym artykułem o InputBoxes.
Funkcja VBA MsgBox
W VBA łatwo wyświetlić prosty MsgBox:
1 | MsgBox "To jest okno wiadomości" |
Możesz jednak zrobić o wiele więcej niż tylko wyświetlić proste okno komunikatu OK. Przyjrzyjmy się szybko skomplikowanemu przykładowi, zanim zagłębimy się w konkrety…
VBA TakNie Pole wiadomości
Poniżej stworzymy okno wiadomości z:
- Tytuł „Tytuł skrzynki wiadomości” i monit „Tekst”
- Ikona znaku zapytania
- Tak / Nie opcje zamiast prostego „OK”
- Domyślny przycisk = „Nie”
123 | Ciemna odpowiedź jako liczba całkowitaanswer = MsgBox("Tekst", vbQuestion + vbYesNo + vbDefaultButton2, "Tytuł skrzynki wiadomości") |
Okno komunikatu zwróci vbYes lub vbNo w zależności od wyboru użytkownika. Następnie możesz wykonać różne czynności w zależności od wyboru:
12345 | Jeśli odpowiedź = vbTak WtedyMsgBox "Tak"W przeciwnym razieMsgBox "Nie"Zakończ, jeśli |
W następnej sekcji pokażemy Ci wszystkie opcje dostępne podczas tworzenia skrzynek wiadomości. Następnie przedstawimy składnię funkcji MsgBox, a na koniec omówimy inne przykłady okien komunikatów.
Opcje okna wiadomości VBA
Spójrz na poniższy obrazek. Tutaj zobaczysz (prawie) wszystkie opcje dostępne podczas tworzenia skrzynek wiadomości. Zwróć uwagę na ikony i różne przyciski.
To jest zrzut ekranu „MessageBox Builder” z naszego dodatku Premium VBA: AutoMacro. MessageBox Builder pozwala szybko zaprojektować żądaną skrzynkę wiadomości i wstawić kod do modułu kodu. Zawiera również wiele innych kreatorów kodu, obszerną bibliotekę kodów VBA oraz zestaw narzędzi do kodowania. To pozycja obowiązkowa dla każdego programisty VBA.
Składnia funkcji MsgBox
MsgBox( monit [, przyciski ] [, tytuł ] [, plik pomocy, kontekst ] )
monit (wymagane) - To jest tekst głównego okna wiadomości.
guziki - Wybierz przyciski do wyświetlenia. Jeśli pominięto, „tylko OK”. Tutaj możesz również określić, jaką ikonę chcesz wyświetlić oraz przycisk domyślny.
tytuł – Tytuł u góry okna wiadomości. W przypadku pominięcia wyświetlana jest nazwa bieżącej aplikacji (np. Microsoft Excel).
plik pomocy - Określ plik pomocy, do którego można uzyskać dostęp, gdy użytkownik kliknie przycisk „Pomoc”. Jeśli określono, musisz również dodać kontekst (poniżej)
kontekst - Wyrażenie liczbowe reprezentujące numer kontekstu Pomocy przypisany do odpowiedniego tematu Pomocy.
Prawdopodobnie możesz zignorować argumenty pliku pomocy i kontekstu. Nigdy nie widziałem ich używanych.
Dostosuj tytuł i monit pola wiadomości
Funkcja MsgBox pozwala dostosować tytuł i monity, takie jak:
1 | Msgbox "Monit", "Tytuł" |
Inny przykład:
123 | Sub MsgBoxPromptTitle()MsgBox "Krok 1 zakończony. Kliknij OK, aby uruchomić krok 2.", "Krok 1 z 5"Napis końcowy |
Ważny! Musisz pamiętać, aby otoczyć tekst cytatami.
MessageBox Line Breaks
Możesz także dodać podziały wierszy do monitów w oknie wiadomości za pomocą „vbNewLine”.
123 | Sub MsgBoxPromptTitle_NewLine()MsgBox "Krok 1 zakończony." & vbNewLine & "Kliknij OK, aby uruchomić Krok 2.", , "Krok 1 z 5"Napis końcowy |
Zauważ, że do łączenia tekstu używamy symbolu &. Możesz dowiedzieć się więcej o używaniu & z tekstem i innych opcjach wstawiania podziałów wierszy w naszym artykule na temat łączenia tekstu.
Ikony MsgBox
VBA daje możliwość dodania jednej z czterech gotowych ikon do skrzynek wiadomości:
Ikona Stała | Ikona |
---|---|
vbInformacje | ![]() |
vbKrytyczny | ![]() |
vbPytanie | ![]() |
vbWykrzyknik | ![]() |
Stała Icon powinna być umieszczona w argumencie button:
123 | Sub MsgBoxQuestionIcon()MsgBox "Przykład pytania", vbQuestionNapis końcowy |
Spowoduje to wygenerowanie domyślnego okna komunikatu „OK” z ikoną pytania:
Zwróć uwagę, jak podczas pisania Edytor VBA pokaże Ci dostępne opcje:
Jest to pomocne, ponieważ nie musisz pamiętać dokładnej składni ani nazw ikon lub przycisków.
Teraz zademonstrujemy każdą ikonę okna wiadomości:
Ikony MsgBox - Informacje
123 | Sub MsgBoxInformationIcon()MsgBox "Przykład informacji", vbInformationNapis końcowy |
Ikony MsgBox - krytyczne
123 | Sub MsgBoxCriticalIcon()MsgBox "Przykład krytyczny", vbCriticalNapis końcowy |
Ikony MsgBox - Pytanie
123 | Sub MsgBoxQuestionIcon()MsgBox "Przykład pytania", vbQuestionNapis końcowy |
Ikony MsgBox - wykrzyknik
123 | Sub MsgBoxExclamationIcon()MsgBox "Przykład wykrzyknika", vbExclamationNapis końcowy |
Poniżej omówimy generowanie okienek wiadomości z różnymi układami przycisków. Jeśli wybierzesz inny typ okna wiadomości, będziesz musiał dodać typ ikony po przyciskach za pomocą „+”:
123 | Sub MsgBoxQuestionIcon()MsgBox "Czy chcesz kontynuować?", vbOKCancel + vbQuestionNapis końcowy |
Zmienne MsgBox
Do tej pory pracowaliśmy głównie z domyślnym oknem komunikatu „OK”. Okno komunikatu OK ma tylko jedną opcję: naciśnięcie „OK” umożliwia kontynuację kodu. Możesz jednak określić również inne grupy przycisków: OK / Anuluj, Tak / Nie itp.
W takim przypadku będziesz chciał wykonać różne akcje w zależności od tego, który przycisk zostanie naciśnięty. Spójrzmy na przykład.
Oto okno wiadomości, które wygenerujemy:
To jest cały kod (następnie go rozbijemy):
123456789101112 | Sub MsgBox Variable()Ciemna odpowiedź jako liczba całkowitaanswer = MsgBox("Czy chcesz kontynuować?", vbQuestion + vbYesNo)Jeśli odpowiedź = vbTak WtedyMsgBox "Tak"W przeciwnym razieMsgBox "Nie"Zakończ, jeśliNapis końcowy |
Najpierw przypisujemy wyjście komunikatu do zmiennej całkowitej.
123 | Ciemna odpowiedź jako liczba całkowitaanswer = MsgBox("Czy chcesz kontynuować?", vbQuestion + vbYesNo) |
Następnie używamy If-Else, aby określić, co zrobić w zależności od tego, który przycisk został naciśnięty:
12345 | Jeśli odpowiedź = vbTak WtedyMsgBox "Tak"W przeciwnym razieMsgBox "Nie"Zakończ, jeśli |
Funkcja MsgBox zwraca wartość całkowitą (od 1 do 7), więc definiujemy zmienną jako typ całkowity. Jednak zamiast odnosić się do liczby całkowitej, możesz odwoływać się do stałej (np. vbOK, vbCancel itp.). Spójrz na tę tabelę, aby zobaczyć wszystkie opcje:
Przycisk | Stały | Wartość |
---|---|---|
ok | vb OK | 1 |
Anulować | vbAnuluj | 2 |
Anulować | vbAbort | 3 |
Spróbować ponownie | vbRetry | 4 |
Ignorować | vbIgnoruj | 5 |
tak | vbTak | 6 |
Nie | vbNo | 7 |
Teraz zademonstrujemy każdą grupę przycisków:
OK Okno wiadomości - vbOKOnly
To jest standardowe okno komunikatów VBA.
123456 | Sub MsgBox_OKTylko()Ciemna odpowiedź jako liczba całkowitaanswer = MsgBox("Przykład tylko OK", tylko vbOK)Napis końcowy |
OK Anuluj Skrzynka wiadomości - vbOKAnuluj
123456789101112 | Sub MsgBox_OKAnuluj()Ciemna odpowiedź jako liczba całkowitaanswer = MsgBox("Przykład OK Anuluj", vbOKCancel)Jeśli odpowiedź = vbOK WtedyMsgBox "OK"W przeciwnym razieMsgBox "Anuluj"Zakończ, jeśliNapis końcowy |
Tak Nie Skrzynka wiadomości - vbYesNo
123456789101112 | Sub MsgBox_TakNie()Ciemna odpowiedź jako liczba całkowitaanswer = MsgBox("Tak Nie Przykład", vbYesNo)Jeśli odpowiedź = vbTak WtedyMsgBox "Tak"W przeciwnym razieMsgBox "Nie"Zakończ, jeśliNapis końcowy |
Tak Nie Anuluj Skrzynka wiadomości - vbYesNoCancel
1234567891011121314 | Sub MsgBox_TakNieAnuluj()Ciemna odpowiedź jako liczba całkowitaanswer = MsgBox("Tak Nie Anuluj Przykład", vbYesNoCancel)Jeśli odpowiedź = vbTak WtedyMsgBox "Tak"Odpowiedź ElseIf = vbNo ThenMsgBox "Nie"W przeciwnym razieMsgBox "Anuluj"Zakończ, jeśliNapis końcowy |
Przerwij ponowienie Ignoruj okno komunikatu - vbAbortRetryIgnore
1234567891011121314 | Sub MsgBox_AbortRetryIgnore()Ciemna odpowiedź jako liczba całkowitaanswer = MsgBox("Przykład ignorowania ponawiania próby przerwania", vbAbortRetryIgnore)Jeśli odpowiedź = vbAbort WtedyMsgBox "Przerwij"ElseIf odpowiedź = vbRetry ThenMsgBox "Ponów"W przeciwnym razieMsgBox "Ignoruj"Zakończ, jeśliNapis końcowy |
Ponów Anuluj okno wiadomości - vbRetryCancel
123456789101112 | Sub MsgBox_RetryCancel()Ciemna odpowiedź jako liczba całkowitaanswer = MsgBox("Przykład anulowania ponownych prób", vbRetryCancel)Jeśli odpowiedź = vbPonów wtedyMsgBox "Ponów"W przeciwnym razieMsgBox "Anuluj"Zakończ, jeśliNapis końcowy |
Przykłady VBA MessageBox
Potwierdzenie w oknie komunikatu przed uruchomieniem makra
Ten kod wyświetli okno komunikatu Tak Nie przed wywołaniem makra. Jeśli klikniesz Tak, makro zostanie wywołane, jeśli klikniesz Nie, makro nie zostanie uruchomione.
12345678 | Sub Msgbox_Przed uruchomieniem()Ciemna odpowiedź jako liczba całkowitaanswer = MsgBox("Czy chcesz uruchomić Makro1?", vbQuestion + vbYesNo)Jeśli odpowiedź = vbTak, Wywołaj Makro1Napis końcowy |
Tak / Nie Skrzynka wiadomości - Wyjdź z napisów
Tutaj potwierdzimy z użytkownikiem, czy kontynuować uruchamianie makra. Jeśli klikniesz Nie, kod wyjdzie z podrzędnej, w przeciwnym razie procedura będzie kontynuowana.
12345678910 | Sub Msgbox_Przed uruchomieniem()Ciemna odpowiedź jako liczba całkowitaanswer = MsgBox("Czy chcesz kontynuować?", vbQuestion + vbYesNo)Jeśli odpowiedź = vbNo to wyjdź z Sub„Jakiś kod”Napis końcowy |
Okno komunikatów VBA w programie Access VBA
Wszystkie powyższe przykłady działają dokładnie tak samo w Access VBA, jak w Excel VBA.