• Nie Znaleziono Wyników

Arkusze kalkulacyjne i VBA

N/A
N/A
Protected

Academic year: 2021

Share "Arkusze kalkulacyjne i VBA"

Copied!
14
0
0

Pełen tekst

(1)

Arkusze kalkulacyjne i VBA

Uniwersytet Łódzki

Wydział Matematyki i Informatyki

Tadeusz Krasiński

Lekcja 3. Okna dialogowe

Studia Podyplomowe „Analiza danych i data mining”

Rok akademicki 2018/19

(2)

OKNA DIALOGOWE (UserForms)

W wielu przypadkach wbudowane proste okna InputBox i MsgBox nie wystarczają. Przypomnijmy podstawową składnię tych okien:

• InputBox (”Zapytanie”, ”Tytuł okna”, ”Wartość domyślna w oknie”) – wartością wpisaną przez użytkownika, którą można dalej używać, jest tekst

• MsgBox (”Zapytanie”, Możliwe przyciski, ”Tytuł okna”) – wartość, wybrana przez użytkownika (wyłącznie ustalone odpowiedzi: vbYes, vbNo, vbOK itd.), można dalej używać, jako wartość zmiennej

• MsgBox ”Tekst” – wyświetla tekst

• MsgBox Zmienna – wyświetla wartość zmiennej

Wartości InputBox (tekst) i MsgBox (określone stałe np. vbOK) możemy przypisać zmiennej i dalej używać te wartości w makrach.

Ćwiczenie 1 (przypominające). Napisać makro wykorzystujące:

• InputBox w którym pytamy o coś np. Jaki dzisiaj jest dzień?

• MsgBox, w którym pytamy np. Czy zgadzasz się na reklamę?

(3)

Kliknięcie przycisku lub wybór z listy lub wybór opcji generuje pewną instrukcję (makro).

Za ich pomocą nie można jednak np. dokonywać wyborów z listy, nie można wybierać opcji, wpisywać różne dane itp.

Wtedy tworzymy własne okna dialogowe z potrzebnymi nam przyciskami. Nazywają się one UserForm.

Przykład 1.

(4)

Do wyboru w oknach UserForm są przyciski różnego rodzaju. Podstawowe przedstawione są na rysunku

Rodzaje przycisków (formantów) w oknach dialogowych (podstawowe):

1. CheckBox wartości to True (zaznaczony) i False

2. ComboBox - po kliknięciu strzałki otwiera się lista, z której wybieramy element; jest to wartość ComboBox. Można również wpisywać wartość, a nie tylko wybierać wartość z listy.

3. CommandButton - wartości to True (zaznaczony) i False, używany do uruchomienia innego makro po kliknięciu (najczęściej przypisujemy im znaczenie OK, Anuluj itp.,

(5)

4. Frame do grupowania innych przycisków np. CheckBox czy OptionButton 5. Image – do wyświetlania obrazów pobieranych z innych źródeł

6. Label tylko do zamieszczenia tekstu, zwykle nazw

7. ListBox zadajemy listę elementów z której wybieramy jeden lub więcej elementów; jest to wartość tego przycisku 8. MultiPage do grupowania tematycznie powiązanych przycisków na każdej „stronie”; możemy zwiększać liczbę

stron, wartością jest numer strony (liczonych od 0)

9. OptionButton na ogół umieszczamy kilka do wybierania spośród wielu opcji (możemy zgrupować je w Frame);

wybiera się tylko jedną opcję.

10.RefEdit służy do wyboru zakresu przez użytkownika

11.ScrollBar – suwak którym wybieramy wartości z danego zakresu (na ogół dużego) np. 1 - 10000

12.SpinButton podobny do suwaka ale z małego zakresu wartości np., 1,2,…,20. Kliknięcie zmienia wartość o określony skok.

13.TabStrip podobny do MultiPage, przyciski umieszczone na jednej stronie są automatycznie umieszczane na pozostałych.

14.TextBox umożliwia wprowadzenie tekstu; jest to wartość tego przycisku.

15.ToggleButton przełącznik wartością jest True lub False.

(6)

Kroki tworzenia okna dialogowego UserForm Utworzenie okna dialogowego wraz z przyciskami w oknie Edytora VBA:

• W oknie VBA w aktualnym skoroszycie klikamy prawym przyciskiem i wstawiamy UserForm lub poprzez Insert/UserForm,

• W oknie Properties możemy oknu nadać nową nazwę (Name – nazwa tego okna, którą możemy posługiwać się w innych makrach itp. i Caption – nazwa która pojawi się w nagłówku okna)

• Z okna Toolbox przenosimy przyciski do UserForm (w dowolnej ilości).

(7)

Ćwiczenie 2. Utworzyć nowy UserForm z 4 różnymi przyciskami

• Nadać oknu nazwę „Emerytura”

• Zatytułować okno „Wybór emerytury”

Zmiana nazw, zmiana wielkości itp. przycisków

Każdy UserForm oraz poszczególne przyciski mają swoją tabelę własności (Properties):

• Raz klikamy przycisk i nanosimy zmiany myszą lub zmieniamy w oknie Properties

• Własności Properties przycisków zależą od rodzaju przycisku

(8)

Ćwiczenie 3. Zmienić nazwy przycisków i ich wielkości z poprzedniego ćwiczenia, zarówno na samych przyciskach i we własnościach (Properties).

Wywoływanie okna dialogowego UserForm

Do wywołania okna dialogowego w arkuszu Excela musimy utworzyć standardowe makro (w zwykłym module związanym z aktualnym skoroszytem). Np. jeśli nasze okno dialogowe ma nazwę np. UserForm1, to jest to makro Sub NazwaMakra()

UserForm1.Show End Sub

Uruchomienie tego makra (sposoby uruchamiania makr poznaliśmy wcześniej) powoduje wyświetlenie okna dialogowego UserForm1.

(9)

Ćwiczenie 4. Utworzyć drugie okno dialogowe (z innymi przyciskami, z inną nazwą), napisać 2 makra uruchamiające je i sprawdzić czy pojawiają się. W Arkuszu4 stwórz przycisk CommandButton i przypisz do niego makro otwierające User Form utworzony w tym zadaniu.

Ustalanie list i zakresów wartości związanych z niektórymi przyciskami.

Dotyczy to niektórych przycisków:

• ListBox i ComboBox – w oknie Properties – własność: RowSource wpisujemy zakres komórek (np. B2:B10) z otwartego Arkusza np. lista dni tygodnia czy miesięcy (gdy z innego arkusza np. z arkusza3 to Arkusz3!B2:B10).

Inny sposób: wpisujemy makro z metodą (funkcją) AddItem.

• ScrollBar i SpinButton w oknie Properties – własność: Min i Max wpisujemy zakres np. od 1 do 100.

W innych przyciskach w oknie Properties – własność: Value.

Aktualną wartość odczytujemy w oknie Properties – własność: Value.

Ćwiczenie 5. Utworzyć okno dialogowe z przyciskami ListBox i ComboBox i z arkusza pobrać listy, utworzone dowolnie. Sprawdzić działanie tego okna w zwykłym arkuszu (po napisaniu makra uruchamiającego). Podobnie z przyciskami ScrollBar i SpinButton. Zobaczyć jak zmienia się własność Value w oknie Properties.

Ćwiczenie 6. Utworzyć okno dialogowe z przyciskiem ListBox i wpisać listę za pomocą metody AddItem.

(10)

Uruchamianie zdarzeń związanych z przyciskami

Każdy przycisk ma układ ustalonych zdarzeń, które mogą uruchamiać instrukcje (makra). Zatem musimy utworzyć makra związane z poszczególnymi zdarzeniami danego przycisku w danym oknie.

• Dwukrotnie klikamy dany przycisk. Otwiera nam się puste makro zatytułowane np. CheckBox_Click().

(w liście rozwijanej z prawej strony możemy ustalić inny rodzaj zdarzenia wywołujący makro, np. podwójne kliknięcie, itp.). Makro to jest zapisane w module związanym z UserForm.

• Tworzymy makro które będzie wykonane po zajściu zdarzenia, np. po kliknięciu danego przycisku, np.

Private Sub CheckBox_Click() ActiveCell.Value = 1111

Unload Me End Sub

• Aby okno zamknęło się automatycznie należy na końcu makra dodać instrukcję: Unload Me (tylko w makrach związanych ze zdarzeniami związanymi z przyciskami danego UserForm).

Ćwiczenie 7. Utworzyć okno dialogowe (UserForm)z trzema przyciskami OptionButton i do każdego przypisać inne

zdarzenie (zastosować w tych zdarzeniach np. MsgBox). Odpowiednio nazwać okno. Zastosować również CommandButton, np.OK lub Koniec i przypisać mu również makro.

(11)

Ćwiczenie 8. Utworzyć okno dialogowe (UserForm) z przyciskiem CommandButton, polem tekstowym TextBox i etykietą Label.

• kliknięcie na przycisk polecenia ma spowodować, że tekst z pola tekstowego (.Text) przeniesie się do etykiety (.Caption)

• podwójne kliknięcie ma wyczyścić pole tekstowe i etykietę.

Ćwiczenie 9. Utworzyć okno dialogowe (UserForm) z polami tekstowymi np. imię, Nazwisko, wiek itp. i utworzyć makro przenoszące te dane na listę w arkuszu. Zastosować również CommandButton, np. OK lub Koniec i przypisać mu również makro.

Ćwiczenie 10. Utworzyć okno dialogowe (UserForm) taki jak na obrazku poniżej.

(12)

Zamykanie okien dialogowych Okna dialogowe UserForm możemy zamykać na różne sposoby:

Przyciskiem × w prawym górnym rogu okna dialogowego. Wtedy wybrane dane lub opcje w oknie zostają utracone. Nic nie zdarzy się.

Pod pewnym przyciskiem w oknie (np. CommandButton z napisem OK), po jego kliknięciu, wykona się makro które korzysta z danych wybranych w oknie i w którym końcową instrukcją jest zamknięcie okna Unload Me (lub Unload NazwaOkna). Oczywiście po takim zamknięciu wybrane lub wpisane dane znikają.

Można ukryć okno zachowując wybrane lub wpisane dane. W pewnym makro np. ukrytym pod pewnym przyciskiem w oknie należy użyć instrukcji NazwaOkna.Hide (np. UserForm1.Hide). Wtedy możemy w dalszych działaniach (w innych uruchamianych makrach) używać danych z okna.

Ćwiczenie 11. Wypróbować różne metody zamykania okien dialogowych.

(13)

Okna niemodalne

Aby w Excelu wykonywać dalsze operacje musimy zamknąć okno (którymkolwiek sposobem). Aby okno było widoczne musimy wybrać jego tryb jako „niemodalny”. W makrze uruchamiającym okno należy wpisać NazwaOkna.Show

vbModeless (np. UserForms1.Show vbModeless) lub w oknie Properties tego okna zmienić własność ShowModal na False

Ćwiczenie 12. Wypróbować niemodalne okno dialogowe.

(14)

Uwagi

• Korzystać z pomocy poprzez okna kodu wpisując odpowiednie pojęcie i klikając F1 lub poprzez wyszukanie w Object Browser.

• Wykorzystywać rejestrator makr do pisania kodu makr (rejestrując podobne zdarzenia).

• Wiele przykładów z których możemy korzystać przy rozwiązywaniu zadań zaliczeniowych można znaleźć na stronie internetowej książki Walkenbacha:

• https://helion.pl/pobierz-przyklady/e23pwv/

Cytaty

Powiązane dokumenty

W przypadku, gdy chcemy zapisać nasz program należy użyć polecenia menu ‘File/Save All’ po czym podać nazwę pliku zawierającego kod programu (.cpp) oraz

Rozwiń foldery nowego projektu i zmień nazwę klasy głównej na Obliczenia, klikając na nazwie klasy WeWy prawym przyciskiem myszy i wybierając kolejno polecenia Refactor |

Gdy chcemy wykonać makro krok po kroku (obserwując np.w innym oknie co się dzieje) to debugujemy makro:. Zmniejszamy okno Visual Editor by widzieć

Pod pewnym przyciskiem w oknie (np. CommandButton z napisem OK), po jego kliknięciu, wykona się makro które korzysta z danych wybranych w oknie i w którym końcową instrukcją

W arkuszu umieścić przycisk o tytule Wybierz liczbę który powoduje pojawienie się okna dialogowego z listą liczb od 1 do 10.. Po wyborze liczby okno znika ale w aktywnej

Program tego makra możemy zobaczyć w oknie edytora Visual Basic na karcie Deweloper..

Napisaną przez siebie funkcję wykorzystaj do uzupełnienia odpowiedniej kolumny w tabeli z Arkusza3 (plik lekcja2.xlsx.). Napisz funkcję VBA o podobnym nagłówku, lecz

Przyciski w formularzu można połączyć i przenieść do okna Toolbox jako nowy przycisk.. Utworzyć nowe okno dialogowe, umieścić w