Okno MsgBox w Excel VBA

1. Okno MsgBox – prezentacja danych

Okno MsgBox poznaliśmy przy okazji pisania naszego pierwszego programu. Okno tej funkcji jest jedną z wielu możliwości prezentacji danych za pomocą kodu VBA w Excel. Może nam posłużyć do wyświetlenia dowolnego komunikatu, wyniku naszego programu itp. Poniżej przykład wyświetlenia okna MsgBox z komunikatem o dowolnej treści:

2. Jak wyświetlić komunikat MsgBox podczas otwierania pliku Excel?

Okno MsgBox prócz wyświetlania komunikatu posiada wiele innych parametrów. Możemy np ustawić tytuł okna, jego wielkość itp. Jeśli chcielibyśmy, by np okno posłużyło nam do wyświetlenia komunikatu podczas otwierania pliku Excel możemy zrobić to w następujący sposób. Otwieramy edytor VisualBasic w karcie Developer. W lewej zakładce Project edytora z MicrosoftExcelObject wybieramy “Ten_skoroszyt”. W lewej górnej liście wybieramy obiekt “Workbook”, a w prawej “Open” jako wyzwalacz. Wpisujemy do naszego edytora następujący komunikat, który będzie wyświetlany przy każdorazowym otwarciu naszego pliku Excel:

Pamiętajmy, by wszystko zadziałało poprawnie, plik Excel zapisujemy w formacie xlsm, a więc skoroszyt Excel z obsługą makr. Musimy mieć oczywiście włączoną obsługę makr w naszym programie Excel.

Kurs Excel VBA - Okno MsgBox

Kurs Excel VBA – Okno MsgBox

Możemy także na początek zdefiniować zmienną, która będzie odpowiedzialna za treść komunikatu, a następnie użyć ją w naszym komunikacie:

3. Okno MsgBox – argumenty funkcji

Jak wcześniej wspomniałem, okno MsgBox posiada szereg dodatkowych opcji, prócz samej prezentacji. Pełny model funkcji MsgBox wygląda następująco:

Możemy zaprogramować takie argumenty jak:

Prompt – jest to jedyny argument obowiązkowy. Wprowadzamy tutaj tekst, bądź wartości, które chcemy wyświetlić w naszym komunikacie.

Buttons – argument nie jest obowiązkowy. Określamy w nim styl okna i m.in.rodzaj przycisków, które wyświetlone zostaną w komunikacie. Tabelka ze wszystkimi możliwymi przyciskami zamieszczona jest poniżej. Jeśli nie określimy tego argumentu wyświetli nam się tylko przycisk OK. Jeśli nie zdefiniujemy stylu, automatycznie będzie to vbOKOnly, a więc sam przycisk “OK”.

Title – argument nie jest obowiązkowy. W argumencie Title definiujemy tytuł okna MsgBox.

HelpFile – argument nie jest obowiązkowy. Argument określa odniesienie do pliku pomocy. Sam numer pliku pomocy wpisujemy w argumencie Context.

Context – argument nie jest obowiązkowy. W argumencie odnosimy się za pomocą wartości numerycznej do określonego w poprzednim argumencie HelpFile pliku pomocy.

Warto zaznaczyć, że jeśli nie chcemy używać niektórych argumentów, wystarczy, że oddzielimy je przecinkami np:

Poniżej opis wszystkich opcji dla argumentu buttons:

Stała Opis
vbAbortRetryIgnore Wyświetla przyciski Przerwij, Ponów próbę i Ignoruj
vbApplicationModal Wyświetla okno modalne. Komunikat wstrzymuje wykonywanie bieżącej aplikacji dopóki nie klikniemy przycisku OK
vbCritical Wyświetla komunikat w formie ikony błędu krytycznego i przycisku OK
vbDefaultButton1 Wyświetla przycisk pierwszy jako domyślny
vbDefaultButton2 Wyświetla przycisk drugi jako domyślny
vbDefaultButton3 Wyświetla przycisk trzeci jako domyślny
vbDefaultButton4 Wyświetla przycisk czwarty jako domyślny
vbExclamation Wyświetla komunikat w formie ikony ostrzeżenia i przycisku OK
vbInformation Wyświetla komunikat w formie ikony informacji i przycisku OK
vbMsgBoxHelpButton Wyświetla przyciski OK i Pomoc
vbMsgBoxRight Wyświetla komunikat od prawej do lewej strony
vbMsgBoxRtlReading Wyświetla okno w formie od prawej do lewej strony
VbMsgBoxSetForeground Wyświetla komunikat na pierwszym planie
vbOKCancel Wyświetla przyciski OK i Cancel
vbOKOnly Wyświetla wyłącznie przycisk OK. Przycisk wyświetla się z defaultu. Tzn. Jeśli go nie zdefiniujemy, wyświetli nam się właśnie ten styl
vbQuestion Wyświetla przycisk OK i ikonę znaku zapytania
vbRetryCancel Wyświetla przyciski Ponów próbę i Anuluj
vbSystemModal Wyświetla okno modalne. Komunikat wstrzymuje wykonywanie wszystkich aplikacji dopóki nie klikniemy przycisku OK
vbYesNo Wyświetla przyciski Tak i Nie
vbYesNoCancel Wyświetla przyciski Tak, Nie i Anuluj

4. Jak wykorzystać wynik zwrócony przez przyciski okna MsgBox?

W zależności od tego, których przycisków będziemy używali w naszych aplikacjach, nasz program może zachowywać się różnie w przypadku naciśnięcia przycisków OK, Anuluj, Tak, Nie itp. Po naciśnięciu przycisku w oknie MsgBox otrzymujemy zwrot, który możemy użyć w naszej aplikacji i zaprogramować wedle uznania. Poniżej wartości stałych zwracane po naciśnięciu przycisków oknie MsgBox:

Stała Wartość liczbowa Opis
vbOK 1 Naciśnięto przycisk OK
vbCancel 2 Naciśnięto przycisk Anuluj
vbAbort 3 Naciśnięto przycisk Przerwij
vbRetry 4 Naciśnięto przycisk Ponów
vbIgnore 5 Naciśnięto przycisk Ignoruj
vbYes 6 Naciśnięto przycisk Tak
vbNo 7 Naciśnięto przycisk Nie

5. Przykłady wykorzystania okna MsgBox

Poznaliśmy już okno MsgBox. Stwórzmy kilka prostych programów z użyciem najważniejszych funkcjonalności okna.

5.1 Na początek wyświetlmy okno MsgBox o tytule “Moje okno programu” i wyświetlające komunikat “Witaj Użytkowniku”

5.2 Następnie utwórz okno z takim samym komunikatem i nadajmy mu tytuł “Moje okno programu”

5.3 Stwórzmy okno informujące o wystąpieniu błędu krytycznego, a więc z ikoną błędu krytycznego. Komunikat, który powinien się wyświetlić to “Wystąpił błąd programu”. Tytuł okna to “Błąd krytyczny”

5.4 Co ważne, w drugim argumencie funkcji MsgBox możemy wprowadzić więcej opcji niż jedna. Dla przykładu możemy jednocześnie użyć stałych informujących o błędzie krytycznym, zapytania tak/nie itp. Jeśli chcemy to zrobić, łączymy style za pomocą znaku “+”. Poniżej przykład, w którym wstawimy jednocześnie przyciski Tak/Nie/Anuluj oraz komunikat z ikoną zapytania. Wartość o nazwie DefaultButton2 informuje nas o tym, że z defaultu zaznaczony jest drugi przycisk, a więc w naszym przypadku “Nie”. Wypełniamy także tytuł i treść komunikatu wartościami “Czy jesteś doświadczonym programistą?” oraz “Odpowiedz na pytanie”. Dodatkowo każdą wartość w komunikacie zdefiniujmy wcześniej jako zmienne:

5.5 Poniżej zmodyfikujmy nasz przykład z zadania 4. Po kliknięciu przez użytkownika przycisków Tak lub nie wstawmy odpowiednie komunikaty o treściach “Gratulacje !!!”, bądź “Ćwicz dalej !!!”. Musimy użyć tutaj instrukcji warunkowej If Then Else, o której szerzej piszę w tym artykule. Wykorzystajmy zwrot z pierwszego komunikatu o nazwach vbYes i vbNo. Dla przycisku Anuluj nie przewidujemy żadnego działania, a więc zamknie on po prostu nasze okno. Warto zaznaczyć, że zamiast stałej vbYes możemy także wpisać liczbę 6. Działanie będzie tutaj identyczne zgodnie z naszą tabelką wartości zwracanych z okna.

Wszystkie przykłady z tego rozdziału zamieszczam w poniższym pliku:
kurs_excel_vba_msgbox

6. Zadania (Rozwiązanie możesz wpisać w komentarzu)

6.1 Napisz program  dla okna posiadającego tytuł, komunikat z dowolną treścią, przyciski Tak i Nie. Przycisk  Nie  powinien być ustawiony jako przycisk Default. Sam komunikat wyświetl jako okno z ikoną zapytania.

6.2 Zmodyfikuj przykład 5.5. Ustaw komunikat o treści “Anulowano” dla kliknięcia w przycisk “Anuluj”.

4 comments

  1. PawelW - Odpowiedz

    Czym różni się okno z nawiasami od tego bez nawiasów? Czy da sie je stosować zamiennie?

  2. Kuba - Odpowiedz

    Zadanie Nr. 2

    Sub MsgBoxExample5()
    Dim strPrompt As String
    Dim strStyle As String
    Dim strTitle As String
    Dim StrResponse As String

    strPrompt = “Czy jesteś doświadczonym programistą?”
    strStyle = vbQuestion + vbYesNoCancel + vbDefaultButton2
    strTitle = “Odpowiedz na pytanie”

    StrResponse = MsgBox(strPrompt, strStyle, strTitle)
    ‘Wstawione zostały:Komunikat z ikoną znaku zapytania, odpowiedziami tak, nie, anuluj , defaultbutton oraz tytułem

    If StrResponse = vbYes Then
    MsgBox “Gratuluję !!!”
    ElseIf StrResponse = vbNo Then
    MsgBox “Ćwicz dalej !!!”

    ElseIf StrResponse = vbCancel Then

    MsgBox “Anulowano !!!”
    End If

  3. Kuba - Odpowiedz

    Zadanie nr. 1

    Sub msgboxExample4()

    MsgBox “Czy jesteś zainteresowany ofertą?”, vbYesNo + vbDefaultButton2 + vbQuestion

    End Sub

  4. Pingback: MsgBox VBA Excel – Jak wyświetlić okno? – Analiza danych Blog

Leave Comment

Twój adres email nie zostanie opublikowany.