1 / 19

Programowanie w VBA

Programowanie w VBA. Formularze. Elementy formularzy. Przyciski, etykiety, pola tekstowe. Tworzenie formularza. Tworzenie: prawym przyciskiem na eksploratorze projektu, Insert, UserForm; Wywołanie formularza: w Module tworzymy procedurę (sub) wywołującą formularz przez komendę:

kolton
Download Presentation

Programowanie w VBA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programowaniew VBA Formularze. Elementy formularzy. Przyciski, etykiety, pola tekstowe.

  2. Tworzenie formularza • Tworzenie: prawym przyciskiem na eksploratorze projektu, Insert, UserForm; • Wywołanie formularza: w Module tworzymy procedurę (sub) wywołującą formularz przez komendę: <nazwa_formularza>.Show • Formularz chowamy komendą: <nazwa_formularza>.Hide

  3. Elementy formularza (formanty) • Label - Etykieta – napis na formularzu, dowolnie formatowany, można zmieniać zawartość tekstu, ale tylko z poziomu programu; • TextBox – pole tekstowe – miejsce na wpisanie tekstu przez użytkownika, jak InputBox; • ComboBox – lista wyboru otwierana i zamykana po dokonaniu wyboru; • ListBox – lista wyboru o stałym rozmiarze, przesuwana; • Frame – ramka – ograniczenie graficzne na formularzu; • CommandButton – przycisk; • RefEdit – pole wpisywania zakresów, analogiczne do InputBox i Textbox, ale tylko do zakresów. Wartość pobieramy przez: Set zakres = Range(RefEdit1.Value); • Inne;

  4. Właściwości i układ formularza • Tylko formanty stanowią zawartość formularza; • Właściwości formularza (tło, rysunek w tle, rozmiary, itd.) są dowolnie ustawiane; • Wybór kolorów, czcionek, rozmiarów wszystkich formantów także należy do programisty; • Każdy formant można ustawić, czy jest widoczny (visible); • Formularz można pokazać (<formularz>.Show) z poziomu głównego programu, a schować z poziomu obsługi zdarzenia (np. przycisnięcie na przycisk); • Formularz można zmieniać z poziomu głównego programu przed pokazaniem go (show);

  5. Formularz • Formularz (UserForm1) ma dodatkowe zdarzenia związane z jego uruchomieniem i zamknięciem: • Initialize – wywoływane w momencie załadowania (Load); • Activate – wywoływane w momencie pokazania (Show); • Deactivate – wywoływane w momencie chowania (Hide);

  6. Interakcja formularza z użytkownikiem • Dowolna czynność użytkownika w polu formularza może (ale nie musi) powodować wykonanie procedury obsługującej to zdarzenie (o ile taka istnieje); • „Zdarzenie” to wybranie czegoś na liście, najechanie myszką na etykietę, naciśnięcie przycisku, „zjechanie” myszką z etykiety, z przycisku, itd. • Aby obsłużyć dane zdarzenie, należy stworzyć w kodzie formularza (prawy przycisk myszy na formularzu w eksploratorze projektu i wybór View Code) stosowną procedurę (Private Sub TextBox_Change, Private Sub ListBox_Click);

  7. Ogólne właściwości formantów • Każdemu formantowi (jak i formularzowi) można nadać nazwę (np. zamiast TextBox1, w którym użytkownik ma wpisać imię można dać nazwę Imie); • Caption – opis (na etykiecie, przyciskach) • Można nadać informację o używalności i widoczności elementu, a także czcionkę (np. dla Caption), kolor czcionki, tła; • Każdy formant ma swój zestaw właściwości charakterystycznych dla niego i jego funkcji;

  8. Układanie formantów • Użytkownik sam decyduje o wymiarach formularza, a także o wymiarach i położeniu formantów na nim; • W celu dokładnego ustawienia formantów, można wybrać ich grupę, a następnie w menu Format wybrać odpowiednie rodzaje dostosowania wielkości, ustawienia, itd. (ikonki opisują rodzaj operacji);

  9. Wymiana informacji między formularzem a procedurami • W kodzie przy odpowiednich obsługach zdarzeń można korzystać z odwołań do aktualnego stanu formularza, poprzez odwołania z odpowiednich metod (a także nadawać wartości pozycji w listach lub tekstów w Etykietach/Polach tekstowych); np.: TextBox1.Value = „abc” wybranytekst = ListBox1.Value nr_wybranej_pozycji = ListBox1.ListIndex

  10. Pole tekstowe • Podstawowe zdarzenia: - Change (dowolna zmiana); - AfterUpdate (po skończeniu wpisywania, np. wciśnięcie enter albo kliknięcie na coś innego w obrębie formularza); • Właściwości: - Text – to co jest wpisane do okienka domyślnie (nie można tego pobrać przez value); - Value – to co wpisze użytkownik; - Locked – true/false – zablokowanie pola tekstowego; - Visible – true/false – czy element jest widoczny; np.: TextBox1.Value = „bum”

  11. Dodatki • W czasie obsługi zdarzeń jak najbardziej można używać dowolnych komend VBA dotyczących formularza (a także InputBox, MsgBox, itd.); • Aby edytować obsługę zdarzeń dla danego formantu, należy na niego dwukrotnie kliknąć w edycji formularza; • Aby zmienić rodzaj obsługiwanego wydarzenia należy wybrać odpowiednią pozycję z menu na górze po prawej; • Makro uruchamiające formularz przerywa działanie po komendzie Userform.Show, a wznawia działanie po tej komendzie po zamknięciu formularza;

  12. Plan działania • Wstawiamy formularz w eksploracji projektu; • Tworzymy formularz (jego wygląd) o nazwie <formularz>; • Tworzymy moduł i w nim makro pokazujące formularz (Load <formularz> <formularz>.Show Unload <formularz>); • Tworzymy obsługę zdarzeń formularza (dwukrotne kliknięcie na dany formant lub też prawy przycisk na formularzu/formancie i „View Code”); • W ramach obsługi zdarzeń gdzieś należy umieścić polecenie zamknięcia (schowania) formularza - <formularz>.Hide;

  13. Zadanie 1 • Stworzyć formularz z etykietą i dwoma przyciskami; • Kliknięcie na 1. przycisk wpisuje do etykiety zawartość jakiejś komórki arkusza (np. A1); • Kliknięcie na 2. przycisk zamyka formularz;

  14. Zadanie 2 • Stworzyć pojawiający się formularz (w wyniku uruchomienia makra), w którym znajdą się dwa przyciski i pole tekstowe: 1. przycisk (kliknięcie na niego) blokuje pole tekstowe i wpisuje jego zawartość wpisaną przez użytkownika do arkusza, przy czym ponowne naciśnięcie na ten przycisk odblokowuje pole tekstowe (i odpowiednio do tego zmieniają się nazwy przycisku – „Odblokuj” i „Zablokuj” stosownie do aktualnego działania; 2. przycisk zamyka formularz;

  15. Rozwiązanie Zadania 2 Private Sub CommandButton2_Click() If TextBox1.Locked Then TextBox1.Locked = False CommandButton2.Caption = "Zablokuj" Else TextBox1.Locked = True Cells(1, 1) = TextBox1.Text CommandButton2.Caption = "Odblokuj" End If End Sub

  16. Pola wyboru • Formant wyboru – CheckBox – może być zaznaczony albo odznaczony niezależnie od innych – przyjmuje wartość True albo False; • Formant opcji – OptionButton – może być zaznaczony, ale jego zaznaczenie powoduje odznaczenie innych z tej samej grupy (właściwość GroupName) – przyjmuje wartość True albo False; • Odczytanie: <polewyboru>.Value

  17. Zadanie 3 - domowe Utworzyć formularz (ładnie wyglądający – tło, czcionki, odpowiednie opisy przycisków, pokolorowane i w ramkach wszystko), w którym będą 3 przyciski, etykieta i pole tekstowe: - Pole tekstowe domyślnie będzie zawierało zawartość komórki B2; - Kolejne zakończone wpisy tekstu do pola tekstowego będą automatycznie kopiowały jego zawartość do kolejnych komórek w arkuszu poczynając od komórki A1 i w dół (w ramach kolumny A); - 1. przycisk przekopiuje zawartość pola tekstowego do etykiety; - 2. przycisk zablokuje możliwość wpisywania do pola tekstowego i schowa przycisk 1. (a ponowne wciśnięcie odblokuje pole i pokaże przycisk 1.) i wyświetli zawartość etykiety w MsgBox; - 3. przycisk zamknie formularz;

  18. Dodatkowe informacje do zadania 3 • Aby stworzyć licznik potrzebny w zadaniu nr 3 należy w module utworzyć ten licznik, ale jeszcze przed makrem wywołującym formularz: Public licznik As Integer taka zmienna jest wspólna dla wszystkich makr; • Początkową wartość licznika ustalamy w makrze wywołującym formularz, natomiast zwiększamy go gdzie chcemy (w procedurze obsługującej zdarzenie) – tak więc gdziekolwiek nie zmienimy jego wartości, to zmienia się ona globalnie (wszystkie procedury mają do niej dostęp i mogą ją zmienić tak, że inne procedury widzą tą zmianę);

  19. Zadanie 4 - domowe • Stworzyć formularz z 2 przyciskami, dwoma Textboxami (ilość moli i objętość rozpuszczalnika), etykietami opisującymi odpowiednio TextBoxy, oraz etykietą z wynikiem (stężenie molowe substancji); • przycisk uruchamia obliczenie stężenia i wprowadzenie wyniku obliczenia do etykiety z wynikiem; • przycisk zamyka formularz.

More Related