Okno MsgBox w Excel VBA

Kurs Excel VBA - Okno MsgBox

Kurs Excel VBA – Okno MsgBox

1. Okno MsgBox – prezentacja danych

Okno MsgBox poznaliśmy przy okazji pisania naszego pierwszego programu. Okno MsgBox 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.

Sub MsgBoxExample()
MsgBox "Treść komunikatu"
End Sub

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 edytora z MicrosoftExcelObject wybieramy „Ten_skoroszyt”. W lewej górnej liście wybieramy „Workbook”, a w prawej „Open” i wpisujemy do naszego edytora następujący komunikat, który będzie wyświetlany przy każdorazowym otwarciu naszego pliku Excel:

Sub Workbook_Open()
MsgBox ("Witaj w programie, miłego dnia")
End Sub

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:

Sub MsgBoxExample()
Dim strKomunikat as String
strKomunikat = "Treść komunikatu"
MsgBox strKomunikat
End Sub

2. MsgBox – dodatkowe informacje

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:

Function MsgBox(Prompt, [Buttons As VbMsgBoxStyle = vbOKOnly], [Title], [HelpFile], [Context]) As VbMsgBoxResult

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 określamy 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ć, iż jeśli nie chcemy używać niektórych argumentów, wystarczy, że oddzielimy je przecinkami np:

 MsgBox "Treść", , "Tytuł okna"

Poniżej opis wszystkich stylów dla argumentu:

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

 

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

 

3. Przykłady wykorzystania okna MsgBox

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

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

Sub MsgBoxExample()
MsgBox ("Witaj w programie, miłego dnia")
'Wstawiony został sam komunikat
End Sub

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

Sub MsgBoxExample1()
MsgBox "Witaj Użytkowniku", , "Moje okno programu"
'Wstawiony został komunikat i tytuł okna
End Sub

3.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”

Sub MsgBoxExample2()
MsgBox "Wystąpił błąd programu", vbCritical, "Błąd kryrtyczny"
'Wstawione zostały:Komunikat o błędzie krytycznym, tytuł okna
End Sub

3.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:

Sub MsgBoxExample4()
Dim strPrompt As String
Dim strStyle As String
Dim strTitle As String

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

MsgBox strPrompt, strStyle, strTitle</pre>
<pre>'Wstawione zostały:Komunikat z ikoną znaku zapytania, odpowiedziami tak, nie, anuluj , defaultbutton oraz tytułem</pre>
<pre>End Sub

3.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 typu vbYes możemy także wpisać liczbę 6. Działanie będzie tutaj identyczne zgodnie z naszą tabelką wartości zwracanych z okna MsgBox.

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 !!!"
End If

End Sub

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

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

4.1 Utwórz program wykorzystując okienko MsgBox posiadający 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.

4.2 Dla wyników uzyskanych z kliknięć w przyciski Tak/Nie z przykładu 4.2 ustal działania wyświetlające się w formie komunikatów o dowolnej treści.

4.3 Zmodyfikuj przykład 3.5. Ustaw komunikat o treści „Anulowano” dla kliknięcia przycisku „Anuluj”.

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany.