Funkcja
MsgBox
Przykłady opisane w tej lekcji dostępne są w arkuszu Excela:
VBA.xls, tylko ich samodzielne
przerobienie daje gwarancję zapamiętania tej lekcji.
Przykłady dla wszystkich lekcji szkolenia Excel 2003: ExcelSzkolenie.pl
Cwiczenia Excel 2003.zip
Funkcja MsgBox umożliwia
wyświetlanie komunikatów na ekranie, w zależności od wybranych parametrów może
wyświetlać różne przyciski, to co użytkownik wybierze ma wpływ na to jakie
czynności wykona makro.
Funkcja MsgBox jest bardzo
użyteczna, ponieważ umożliwia łatwą komunikację z użytkownikiem makra.
Zacznijmy od prostego przykładu:
Przykład 1.
Sub MsgBox_Przyklad_1()
MsgBox "Tak wygląda standardowe
okno funkcji MsgBox"
End Sub
Powyższe makro wyświetli okno:
Ale funkcja to oferuje znacznie
więcej niż tylko wyświetlanie komunikatów, które można tylko zaakceptować.
Przejdźmy więc do jej składni.
Składnia:
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
prompt – to tekst jaki ma się
wyświetlać, to jedyna konieczna składowa tej funkcji
buttons – za pomocą tej stałej
wybieramy jakie przyciski mają zostać wyświetlone
title – tytuł okienka z naszym tekstem,
jeżeli nie podamy tytułu, zostanie wyświetlony napis: Microsoft Excel
helpfile – pomoc, opcja nie jest
używana przy prostych makrach
context – kontekst, opcja ta nie
jest używana przy prostych makrach
Poniżej przedstawiam opcje jakie
posiada funkcja MsgBox, najczęściej korzysta się zaledwie z kilku pierwszych z
nich.
Stała |
Opis |
vbOKOnly |
Wyświetlany
jest tylko przycisk OK., tak samo jak wtedy gdy nic nie zostanie wybrane. |
vbOKCancel |
Wyświetlane
są przyciski OK i Anuluj |
vbAbortRetryIgnore |
Wyświetlane
są przyciski Przerwij, Ponów i Ignoruj |
vbYesNoCancel |
Wyświetlane
są przyciski Tak, Nie i Anuluj |
vbYesNo |
Wyświetlane
są przyciski Tak i Nie |
vbRetryCancel |
Wyświetlane
są przyciski Ponów i Anuluj |
vbCritical |
Wyświetlana
jest ikona Komunikat Krytyczny |
vbQuestion |
Wyświetlana
jest ikona Pytanie Ostrzegawcze |
vbExclamation |
Wyświetlana
jest ikona Komunikat Ostrzegawczy |
vbInformation |
Wyświetlana
jest ikona Komunikat Informacyjny |
vbDefaultButton1 |
Pierwszy
przycisk jest wybrany jako domyślny |
vbDefaultButton2 |
Drugi
przycisk jest wybrany jako domyślny |
vbDefaultButton3 |
Trzeci
przycisk jest wybrany jako domyślny |
vbDefaultButton4 |
Czwarty
przycisk jest wybrany jako domyślny |
vbApplicationModal |
Użytkownik
musi odpowiedzieć na pytanie przed kontynuowaniem pracy z Excelem |
vbSystemModal |
Okienko
komunikatu będzie na wierzchu nawet po przejściu do innych aplikacji. |
vbMsgBoxHelpButton |
Dodaje przycisk Pomoc |
Przykład 2.
Sub MsgBox_Przyklad_2()
MsgBox "Czy możemy
kontynuować? ", vbYesNo +
vbQuestion, "Pytanie 1"
End Sub
Powyższe makro wyświetli okno takie
jak poniżej.
vbYesNo – spowodowało wyświetlenie
przycisków Tak i Nie.
vbQuestion – dodało ikonę ze znakiem
zapytania
Połączenie 2 stałych następuje przez
wpisanie pomiędzy nimi znaku +
Po drugim przecinku znajduje się
tytuł „Pytanie
To czy użytkownik wybierze w ‘Tak’
czy ‘Nie’ nie ma w przypadku tego makra najmniejszego znaczenia, ponieważ nie
robi ono nic poza wyświetleniem powyżej pokazanego okna.
Przykład 3.
Aby to co wybierze użytkownik mogło
zostać wykorzystane w kodzie makra najwygodniej będzie przypisać wartość
funkcji MsgBox do zmiennej.
Funkcja MsgBox przyjmuje wartości
liczbowe od 1 do 7 przedstawione w poniższej tabeli.
Stała |
Wartość |
Opis |
vbOK |
1 |
Użytkownik
wybrał OK |
vbCancel |
2 |
Użytkownik
wybrał Anuluj |
vbAbort |
3 |
Użytkownik
wybrał Przerwij |
vbRetry |
4 |
Użytkownik
wybrał Ponów |
vbIgnore |
5 |
Użytkownik
wybrał Ignoruj |
vbYes |
6 |
Użytkownik
wybrał Tak |
vbNo |
7 |
Użytkownik
wybrał Nie |
W poniższym przykładzie wynik tego
co wybierze użytkownik makra przypisywane jest do zmiennej ‘odpowiedź’.
W kolejnej linii kodu jeśli
odpowiedź wynosi 6 (użytkownik wybrał Tak) wyświetlany jest komunikat „Wybrano:
Tak” w przeciwnym razie wyświetlany jest komunikat „Wybrano: Nie”.
Sub MsgBox_Przyklad_3()
Odpowiedź = MsgBox("Czy możemy
kontynuować", vbYesNo + vbQuestion, "Pytanie 1")
If Odpowiedź = 6 Then MsgBox
"Wybrano: Tak" Else MsgBox "Wybrano: Nie"
End Sub
Równie
dobrze wartość liczbową możemy zastąpić stałą jej odpowiadającą czyli dla
liczby 6, vbYes. Poniższe makro, będzie działać dokładnie tak samo.
Sub
MsgBox_Przyklad_3A()
Odpowiedź
= MsgBox("Czy możemy kontynuować", vbYesNo + vbQuestion,
"Pytanie 1")
If
Odpowiedź = vbYes Then MsgBox "Wybrano: Tak" Else MsgBox
"Wybrano: Nie"
End Sub
Makro
będzie krótsze jeżeli zamiast przypisania wartości MsgBox do zmiennej od razu
użyjemy jej w konstrukcji If.
Poniższe
makro będzie działać dokładnie tak samo.
Sub
MsgBox_Przyklad_3B()
If
MsgBox("Czy możemy kontynuować", vbYesNo + vbQuestion, "Pytanie
1") = _
vbYes Then
MsgBox "Wybrano: Tak" Else MsgBox "Wybrano: Nie"
End Sub
Przypisywanie
wartości do zmiennej daje możliwość wykorzystania tej danej w wielu miejscach
kodu i jego większa użyteczność jest widoczna przy dłuższych makrach.
Przykład 4.
W poniższym przykładzie użyto:
vbCrLf Polecenie powoduje
przejście do kolejnej linii, użycie go dwukrotnie wstawia pustą linię.
& Łączy tekst
(znajdujący się zawsze pomiędzy znakami ””) z wartościami zmiennych i jak w
naszym przypadku przejściem do kolejnej linijki
vbCritical
Ikona Komunikat
Krytyczny dodaje dramatyzmu tej wiadomości
vbSystemModal Powoduje, że okienko będzie zawsze na
wierzchu nawet jeśli przejdziemy do innych aplikacji
Sub
MsgBox_Przyklad_4()
MsgBox
"Czy wolisz sformatować dysk Twardy C czy wykasować jego zawartość?"
& vbCrLf & vbCrLf & _
"Wybierz Tak aby sformatować C, wybierze
Nie aby tylko wykasować zawartość dysku C." _
, vbYesNo
+ vbCritical + vbSystemModal, "Trudny Wybór"
End Sub
Makro to oczywiście nie robi nic
poza wyświetleniem tego komunikatu, dysk twardy C jest bezpieczny.
Przykład 5.
Sub
MsgBox_Przyklad_5()
MsgBox
"W tym przykładzie ustawiliśmy 2 przycisk jako domyślny",
vbYesNoCancel + vbDefaultButton2 + vbExclamation, "Przykład 5"
End Sub
Korzystając
z vbDefaultButton2 jako domyślny ustawiliśmy drugi przycisk.
Przykład 6.
W tym przykładzie napiszemy makro,
które po wciśnięciu przycisku znajdującego się w arkuszu Excela zapyta czy
użytkownik na pewno chce wydrukować cały arkusz i jeśli odpowiedź będzie
twierdząca rozpocznie drukowanie.
Podczas wprowadzania kodu makr Excel
podpowiada jakie elementy kodu mogą być wprowadzone w danym miejscu i ogranicza
listę podczas pisania tylko do tych, które zaczynają się tak samo jak tekst już
przez nas wprowadzony, jest to dużym ułatwieniem gdy np. nie jesteśmy pewni
pisowni polecenia, które chcemy użyć. Wyświetlane są też składnie funkcji i
procedur, dzięki czemu nie musimy dokładnie pamiętać jaka jest kolejność
elementów składowych funkcji.
Poniżej pełny kod makra.
Jeżeli użytkownik wybierze nie
(‘=vbNo’) wtedy (‘Then’) wykonywana jest komenda ‘Exit Sub’ powodująca
zakończenie makra.
W przeciwnym razie wykonywane są
kolejne polecenia zapisane w kodzie makra, w tym przypadku drukowanie.
Powyższe makro wyświetla następujący
komunikat:
Jednym ze sposobów uruchomienia
makra jest przypisanie go do przycisku znajdującego się w arkuszu Excela. Aby
to zrobić należy pokazać pasek narzędzi ‘Formularze’
Na pasku narzędzi ‘Formularze’
klikamy ikonę ‘Przycisk’ lewym klawiszem myszy i zwalniamy go, po czym klikamy
także lewym klawiszem w miejscu gdzie przycisk ma się znaleźć i trzymając cały
czas wciśnięty lewy klawisz przeciągamy myszą, określając w ten sposób wielkość
przycisku.
Po wykonaniu przycisku samoczynnie
otwiera się okno umożliwiające przypisanie do niego makra, wybieramy nasze
makro i klikamy przycisk ‘OK’.
Tekst wyświetlany na przycisku
zmieniamy klikając na nim, kasując obecny teks i wprowadzając nowy.
Wielkość przycisku możemy zmieniać
wybierając przycisk kliknięciem, po czym rozciągamy/zwężamy go ciągnąc za jeden
z jego rogów.
Makro jest gotowe do użytku.
Szkolenie Excel 2003 Szkolenie Excel 2007