Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Programowanie w Visual Basic1 Opracowanie: Joanna Sekulska-Nalewajko Łukasz Sturgulewski Literatura: John Walkenbach Programowanie Excel 2000 Visual Basic,

Podobne prezentacje


Prezentacja na temat: "Programowanie w Visual Basic1 Opracowanie: Joanna Sekulska-Nalewajko Łukasz Sturgulewski Literatura: John Walkenbach Programowanie Excel 2000 Visual Basic,"— Zapis prezentacji:

1 Programowanie w Visual Basic1 Opracowanie: Joanna Sekulska-Nalewajko Łukasz Sturgulewski Literatura: John Walkenbach Programowanie Excel 2000 Visual Basic, Wydawnictwo RM, Warszawa 2000

2 Programowanie w Visual Basic2 Visual Basic Visual Basic to prosty i przejrzysty język służący do tworzenia aplikacji, które działają w systemie Windows 9x i Windows NT. Dziś po kilku latach gwałtownego rozwoju, VB należy do najpopularniejszych pakietów programowania wizualnego. Początkujący użytkownicy mogą tworzyć proste aplikacje np. działające pod Excelem, natomiast zaawansowanym VB oferuje narzędzie budowania złożonych aplikacji komercyjnych.

3 Programowanie w Visual Basic3 Visual Basic jest językiem programowania wyższego rzędu, co oznacza, że wykonanie pojedynczego polecenia Visual Basic powoduje wykonanie wielu podpoleceń. Słowo visual oznacza, że tworzenia aplikacji w dużej mierze polega na rysowaniu obiektów. Gdy wizualna część projektu jest gotowa rozpoczyna się pisanie kodu. Elementy projektu można w każdym momencie edytować i modyfikować. VB6 to nie tylko język. Visual Basic to bogate środowisko tworzenia aplikacji. Visual Basic

4 Programowanie w Visual Basic4 Microsoft Visual Basic Firma Microsoft oferuje osobny pakiet programistyczny (Visual Basic) lub wchodzący w skład pakietu Microsoft Visual Studio wraz z np. Visual C++.

5 Programowanie w Visual Basic5 Microsoft Visual Basic Microsoft Visual Basic jest pełnym środowiskiem programistycznym, które umożliwia szybkie i łatwe tworzenie aplikacji systemu Windows. Zawiera wszystkie elementy niezbędne do tworzenia, rozwijania, modyfikowania, testowania, kontrolowania, poprawiania i kompilowania tworzonych aplikacji.

6 Programowanie w Visual Basic6 Microsoft Visual Basic W skład środowiska wchodzą m.in.: edytor pozwalający na tworzenie kodu programu, elementy sterujące służące do tworzenia interfejsu użytkownika, system wyszukiwania błędów, system kontroli stanu wykonywanej aplikacji, zestaw kreatorów ułatwiających tworzenie aplikacji, zestaw dodatkowych narzędzi pomocnych przy programowaniu, kompilator, tworzący pełnoprawne aplikacje Windows, Setup Wizard, ułatwiający tworzenie wersji instalacyjnej stworzonej aplikacji, i wiele innych...

7 Programowanie w Visual Basic7 Historia Visual Basic i VBA Historia BASICA: Begginers All-purpose Symbolic Instruction Code. Język Basic został stworzony przez Johna G. Kemeny'ego i Thomasa E. Kurtza w 1963 roku w Darmouth College. Stał się on szybko popularny jako język nauczania w uniwersytetach i szkołach. W latach 70-tych, został przystosowany do użycia na komputerach osobistych przez założyciela i prezesa firmy Microsoft - Billa Gates'a. Rozwinięcie: Visual Basic for Windows (1991 rok). Excel 5: Pierwsza aplikacja wyposażona w VBA. Obecnie: Wiele aplikacji różnych producentów jest wyposażonych w VBA – wspólny język skryptowy dla aplikacji (Word, Excel, Corel, Visio). VBA – oparty na BASICu ale obecnie nie mający z nim wiele wspólnego.

8 Programowanie w Visual Basic8 BASIC kiedyś Język Basic przeszedł wiele zmian i udoskonaleń od pierwszych wersji do teraźniejszego wyglądu i sposobu programowania. W czasach, kiedy typowymi domowymi komputerami były komputery 8-io bitowe, takie jak: Atari 800XL, Commodore C64 czy ZX Spectrum, język Basic był podstawowym językiem programowania. Wersje stosowane w różnych komputerach nieco się różniły. Był to jednak typowy język strukturalny z dość ograniczoną liczbą rozkazów. Każdy rozkaz występował w osobnej linii programu, a każda linia zaczynała się od numeru linii. Był to język wystarczający do pisania prostych aplikacji jak i dość zaawansowanych programów i gier. Najprostszy program napisany w języku Basic wygląda tak: 10 PRINT WITAJ 20 GOTO 10

9 Programowanie w Visual Basic9 Visual Basic - dziś Przełomem stało się wprowadzenie języka Visual Basic. Programy tworzone w języku Visual Basic są programami zdarzeniowymi, co oznacza, że zdarzenia (np. działania użytkownika, kliknięcie myszką, przesunięcie wskaźnika, minięcie określonego czasu i inne) decydują, kiedy i która procedura zostanie wywołana. Działanie programu zależy od tego, co robi użytkownik i kiedy.

10 Programowanie w Visual Basic10 Prosty program - Kolory RGB VBA - Język wizualny – spora część programowania polega na graficznym ułożeniu elementów aplikacji. Zamiast pisać bardzo rozbudowane aplikacje, w których znaczna część kodu wykorzystywana była do utworzenia interface (wyglądu) aplikacji, język Visual Basic udostępnia już środowisko graficzne. Należy wybrać odpowiedni element wyglądu i narysować go, określając jego położenie i rozmiar. Skraca to znacznie czas tworzenia aplikacji, ponieważ zamiast pisać rozbudowany kod wystarczy "poskładać" program z dostępnych elementów.

11 Programowanie w Visual Basic11 Formanty graficzne Image UserForm Label ScrollBar Przybornik

12 Programowanie w Visual Basic12 Edytor Visual Basic for Application W Excelu 5 i Excelu 95 (Excel 7) moduł Visual Basic pojawiał się jako oddzielny arkusz skoroszytu. Począwszy od Excela 97 moduły Visual Basic nie tworzą już oddzielnych arkuszy. Zamiast tego są wyświetlane i edytowane za pomocą Edytora Visual Basica (VBE). Moduły Visual Basic są nadal przechowywane w plikach skoroszytów. Nie są jedynie widoczne, dopóki nie zostanie uruchomiony edytor VB. Wersja ta oferuje już nowy sposób projektowania własnych okien dialogowych (UserForms). Edytor Visual Basic jest oddzielną aplikacją ściśle współpracującą z Excelem. Polega to na tym, że Excel sam troszczy się o wszystkie szczegóły dotyczące otwierania edytora w razie potrzeby. Nie można jednak uruchomić Edytora Visual Basic w trybie niezależnym - aby działał musi być uruchomiony Excel.

13 Programowanie w Visual Basic13 Po co Visual Basic for Applications? MS Excel rozbudowany o VBE staje się wszechstronną aplikacją, wykraczającą znacznie poza to, co większość ludzi kojarzy się ze światem arkuszy kalkulacyjnych. Jedynie 5% użytkowników Excela zdaje sobie sprawę z możliwości tego produktu. Spora część własnych aplikacji obliczeniowych może być wykonana w VBA, dzięki czemu Excel staje się produktem programowalnym.

14 Programowanie w Visual Basic14 Excel dla programistów Język VBA pozwala tworzyć programy strukturalne bezpośrednio w Excelu w otwartym skoroszycie. Struktura plików: układ wieloarkuszowy pozwala wygodnie organizować poszczególne elementy aplikacji i zapisywać je w jednym pliku. Można np. trzymać razem wiele arkuszy roboczych i arkuszy wykresów. Moduły UserForm i VBA są przechowywane w pliku skoroszytu, ale są niewidoczne dla użytkownika.

15 Programowanie w Visual Basic15 Łatwy dostęp do formantów UserForm: Excel pozwala dodawać do arkusza różne formanty, takie jak: Przyciski poleceń, Pola list, Przyciski opcji. Implementacja tych formantów nie wymaga z reguły programowania żadnego makra. Własne okna dialogowe (UserForm). Dostosowywane menu: Excel pozwala zmieniać zawartość poszczególnych menu, jak i dodawać całkiem nowe. Dostosowywane menu podręczne: Excel daje możliwość definiowania własnego menu podręcznego, uruchamianego przez kliknięcie prawym przyciskiem myszy. Excel dla programistów

16 Programowanie w Visual Basic16 Dostosowywanie pasków narzędzi, jako nowych elementów interfejsu użytkownika. Kwerendy: ze środowiska skoroszytu można dostawać się bezpośrednio do innych ważnych źródeł danych. Mogą to być pliki w formatach standardowych baz danych, pliki tekstowe, strony www. Data Access Object i ActiveX Data Objects: elementy te umożliwiają łatwą współpracę z zewnętrznymi bazami danych z poziomu VBA. Excel dla programistów

17 Programowanie w Visual Basic17 Excel dla programistów Rozbudowana możliwość zabezpieczania: utworzona aplikacja może zostać utajniona i zabezpieczona przed zmianami. Własne funkcje arkusza: upraszczanie stosowania formuł i obliczeń

18 Programowanie w Visual Basic18 Visual Basic for Application w pigułce Umiejętność programowania makr dla jednej aplikacji można przenieść potem także na inne programy. Wykonywanie działań VBA odbywa się za pomocą kodu. Private Sub hsbRGB1_Change() Dim Czerwony As Integer Dim Zielony As Integer Dim Nibieski As Integer Czerwony = hsbRGB1.Value Zielony = hsbRGB2.Value Niebieski = hsbRGB3.Value picRGB.BackColor = RGB(Czerwony, Zielony, Niebieski) lblRGB1.Caption = Czerwony lblRGB2.Caption = Zielony lblRGB3.Caption = Niebieski End Sub Private Sub hsbRGB1_Change() Dim Czerwony As Integer Dim Zielony As Integer Dim Nibieski As Integer Czerwony = hsbRGB1.Value Zielony = hsbRGB2.Value Niebieski = hsbRGB3.Value picRGB.BackColor = RGB(Czerwony, Zielony, Niebieski) lblRGB1.Caption = Czerwony lblRGB2.Caption = Zielony lblRGB3.Caption = Niebieski End Sub

19 Programowanie w Visual Basic19 Visual Basic for Application w pigułce Kod VBA przechowywany jest w module VBA. Moduły są przechowywane wraz ze skoroszytem Excela, ale do ich oglądania i edycji służy Edytor Visual Basica.

20 Programowanie w Visual Basic20 Visual Basic for Application w pigułce Moduł VBA składa się z procedur. Procedura to kod komputerowy wykonujący pewne działanie na obiektach bądź z ich udziałem. Procedury mogą być wywoływane w innych procedurach. Oto przykład najprostszej procedury: Sub Test() Suma = MsgBox Wynikiem jest & Suma End Sub Wyświetlenie wyniku procedury:

21 Programowanie w Visual Basic21 Visual Basic for Application w pigułce Moduł VBA może zawierać również procedury typu Function (funkcja). Procedura Function zwraca pojedynczą wartość. Funkcja może być wywoływana przez inną procedurę VBA lub może być używana w formule arkusza. Oto przykład funkcji o nazwie DodajDwaArg : Function DodajDwaArg(arg1, arg2) DodajDwaArg = arg1 + arg2 EndFunction

22 Programowanie w Visual Basic22 Visual Basic for Application w pigułce VBA operuje obiektami zawartymi w jego rodzimej aplikacji (czyli np. w Excelu). Klasy obiektów tworzą strukturę hierarchiczną. Jedne obiekty mogą tworzyć kontenery dla innych obiektów. Excel dysponuje ponad 100 klasami obiektów. Skoroszyty, arkusze, zakresy komórek, wykresy... Sam Excel jest obiektem typu Application i jest kontenerem dla wszystkich pozostałych obiektów. Workbook – skoroszyt CommandBar – pasek narzędzi Worksheet – arkusz Chart – wykres

23 Programowanie w Visual Basic23 Model obiektowy Excela Application Workbooks Worksheets Range PivotTable … … CommandBar Buttons … Worksheet Functions Aby posługiwać się VBA należy zgłębić model obiektowy aplikacji, gdyż VBA operuje po prostu obiektami. Na przykład model obiektowy Excela eksponuje kilka potężnych obiektów do analizy danych, takich jak arkusze, wykresy, tabele przestawne, funkcje matematyczne i finansowe.

24 Programowanie w Visual Basic24 Kolekcje Identyczne obiekty tworzą kolekcje, np. kolekcja Worksheets zawiera wszystkie arkusze z konkretnego skoroszytu, a kolekcja CommandBars zawiera wszystkie obiekty typu CommandBar. Kolekcje również są obiektami. Odwołując się do jakiegoś obiektu zawartego w innym, trzeba podać jego lokalizację w hierarchii, używając kropki jako separatora między kontenerem a jego składnikiem. Na przykład odwołanie do skoroszytu o nazwie Zeszyt1.xls może mieć następującą postać: Application.Workbooks(Zeszyt1.xls)

25 Programowanie w Visual Basic25 Odwołania do obiektów Odwołanie do arkusza: Application.Workbooks(Zeszyt1.xls). Worksheets(Arkusz1) Odwołanie do komórki w arkuszu: Application.Workbooks(Zeszyt1.xls). Worksheets(Arkusz1).Range(A1) Jeśli wiadomo, że Arkusz1 jest aktywnym arkuszem, można uprościć odwołanie stosując zapis: Range(A1)

26 Programowanie w Visual Basic26 Właściwości obiektów Obiekty mają właściwości. Na przykład obiekt Range ma właściwość Value i Name (wartość i nazwa), a obiekt Chart ma właściwość HasTitle (tytuł) i Type (typ). Używając VBA można ustalić właściwości obiektu, a także zmienić je. W zapisie należy podać odwołanie do obiektu i jego właściwości oddzielając dane kropką, np. Worksheets(Arkusz1).Range(A1).Value Zmiennym VBA można przypisywać wartości. Zapis poniżej podaje jak przypisać wartości komórki A1 do zmiennej Stopa. Stopa = Worksheets(Arkusz1).Range(A1).Value Worksheets(Arkusz1).Range(A1).Value = Stopa

27 Programowanie w Visual Basic27 Metody obiektów Obiekty mają metody. Metoda to działanie wykonywane przez obiekt. Na przykład jedną z metod obiektu Range jest ClearContents (usuwanie zawartość komórek zakresu). Oto przykład zapisu: Range(A1).ClearContents

28 Programowanie w Visual Basic28 Instrukcje VBA dysponuje również konstrukcjami typowymi dla nowoczesnych języków programowania, takimi jak: tablice, pętle, For Do While Do Until instrukcje warunkowe, If Select Case Instrukcje sterowania, GoTo Obsługa błędów. Error

29 Programowanie w Visual Basic29 Uruchamianie Edytora Visual Basic Okno Edytora Visual Basic można otworzyć na trzy różne sposoby: Wybrać z menu polecenie Narzędzia > Makra > Edytor Visual Basic. Nacisnąć kombinację klawiszy [Alt+F11]. Kliknąć przycisk Edytor Visual Basic, znajdujący się na pasku narzędzi Visual Basic. Okno Edytora Visual Basic pokazane jest na następnym slajdzie. Uwaga: Twoje okno może wyglądać nieco inaczej (!) ze względu na szerokie możliwości dostosowywania. Między innymi można ukrywać poszczególne okna wewnętrzne, zmieniać ich rozmiar, dokować", przemieszczać itp.

30 Programowanie w Visual Basic30 Okno Edytora Visual Basic Okno kodu programu Okno Immediate Okno projektu Okno właściwości Menu i paski narzędzi

31 Programowanie w Visual Basic31 Elementy okna: Pasek menu Pasek menu zwiera polecenia używane do wykonywania operacji w edytorze. Wiele poleceń z menu ma przypisane skróty klawiszowe np. polecenie View -> Project Explorer ma przypisany klawisz skrótu [Ctrl+R].

32 Programowanie w Visual Basic32 Elementy okna: Paski narzędziowe Paski narzędzi są zwykle wyświetlane tuż poniżej paska menu. Standardowy pasek narzędzi, jest jednym z kilku pasków dostępnych w edytorze. Można je dostosowywać do własnych potrzeb tzn. przemieszczać, ukrywać, wyświetlać, zmieniać zawartość itp. Aby zmienić pasek narzędzi, należy kliknąć na dowolnym z nich prawy przycisk myszy i wybrać z menu pozycję Dostosuj.

33 Programowanie w Visual Basic33 Elementy okna: Eksplorator projektu W oknie Eksploratora projektu (Project) wyświetlane są diagramy zawierające wszystkie skoroszyty otwarte aktualnie w Excelu (łącznie ze skoroszytami ukrytymi). Każdy skoroszyt nazywany jest projektem. Jeśli okno Eksplorator projektu nie jest widoczne należy wybrać z menu pozycję View -> Project Explorer lub nacisnąć kombinację klawiszy [Ctrl+R]. Aby ukryć to okno, należy kliknąć w jego prawym górnym rogu przycisk: X

34 Programowanie w Visual Basic34 Elementy okna: Eksplorator projektu Aby rozszerzyć projekt, wystarczy kliknąć znak + na lewo od jego nazwy w oknie Eksploratora projektu. W celu zwinięcia projektu trzeba z kolei kliknąć znak -. W przypadku próby rozwinięcia zabezpieczonego projektu, na ekranie pojawi się pytanie o hasło.

35 Programowanie w Visual Basic35 Każdy rozwinięty projekt zawiera węzeł o nazwie Microsoft Excel Objects. Przechowuje on elementy odpowiadające wszystkim arkuszom i wykresom zawartym w skoroszycie oraz obiekt o nazwie ThisWorkbook reprezentujący aktywny skoroszyt. Jeśli projekt zawiera jakiekolwiek moduły, na liście występuje ponadto węzeł Modules. Po jego rozwinięciu pojawia się wykaz wszystkich istniejących modułów. Projekt może także zawierać węzeł o nazwie Forms reprezentujący formularze użytkownika. Elementy okna: Eksplorator projektu

36 Programowanie w Visual Basic36 Elementy okna: Eksplorator projektu Dodawanie nowego modułu Visual Basic: Aby dodać do projektu nowy moduł należy zaznaczyć nazwę projektu w oknie Eksploratora projektu i wybrać z menu polecenie Insert > Module. Można też kliknąć nazwę projektu prawym przyciskiem myszy i wybrać to samo polecenie z menu podręcznego. Usuwanie modułu Visual Basic: Aby usunąć moduł z projektu, należy zaznaczyć nazwę tego modułu w oknie Eksploratora projektu i wybrać z menu polecenie File > Remove nazwa modułu. Można też kliknąć nazwę modułu prawym przyciskiem myszy i wybrać to samo polecenie z menu podręcznego. Przed usunięciem modułu pojawi się pytanie, o eksport do pliku.

37 Programowanie w Visual Basic37 Elementy okna: Właściwości obiektu W oknie Właściwości projektu (Properties) wyświetlane są właściwości wybranego obiektu (arkusza, formularza, przycisku itp.). Zakładka Alphabetic pozwala wyświetlić listę właściwości obiektu w porządku alfabetycznym. Zakładka Categorized wyświetla właściwości obiektu według kategorii. Jeśli okno właściwości nie jest widoczne należy wybrać z menu pozycję View -> Properties Window lub nacisnąć klawisz [F4].

38 Programowanie w Visual Basic38 Elementy okna: Instrukcje bezpośrednie Okno Instrukcji bezpośrednich (Immediate) służy do bezpośredniego wprowadzania i wykonywania instrukcji VB (testowanie, śledzenie kodu). Aby wywołać to okno należy wybrać z menu pozycję View -> Immediate Window lub nacisnąć kombinację klawiszy [Ctrl+G]. Aby ukryć to okno, należy kliknąć w jego prawym górnym rogu przycisk: X

39 Programowanie w Visual Basic39 Instrukcje bezpośrednie Instrukcje bezpośrednie funkcji wpisuje się w okno Immediate poprzedzając je znakiem zapytania, a w celu wyświetlenia wyniku należy wcisnąć ENTER. Wynik wyświetlony zostanie w oknie Immediate poniżej.

40 Programowanie w Visual Basic40 Instrukcje bezpośrednie Aby wykonać procedurę w oknie Immediate należy wpisać jej nazwę w tym oknie i nacisnąć klawisz ENTER. Można też wstawiać do procedur polecenia wyświetlające wyniki bezpośrednio w oknie Immediate. Służy do tego celu polecenie Debug.Print

41 Programowanie w Visual Basic41 Elementy okna: Kod programu Każdy element projektu ma związane ze sobą okno kodu np.: Sam skoroszyt (ThisWorkbook); Arkusz; Moduł; Formularz użytkownika; Formanty Aby wyświetlić okno kodu dla danego obiektu, wystarczy kliknąć dwukrotnie jego nazwę w oknie Eksploratora projektu.

42 Programowanie w Visual Basic42 Dostosowywanie środowiska Edytora Visual Basic Aby wywołać okno dialogowe umożliwiające ustawienie parametrów pracy Edytora Visual Basic należy wybrać z menu polecenie Tools > Options. Powyższe okno posiada cztery zakładki: Editor (edytor) Editor Format (format edytora) General (ogólne) Docking (dokowanie)

43 Programowanie w Visual Basic43 Dostosowywanie środowiska Edytora Visual Basic Auto Syntax Check (Automatyczne sprawdzanie składni) Edytor VB wyświetla okna dialogowe po odkryciu błędu syntaktycznego podczas wprowadzania kodu. Require Variable Declaration (Wymagane deklaracje zmiennych) Edytor VB wstawia na początku każdego dodawanego przez użytkownika modułu następującą instrukcję: Option Explicit Obecność tej instrukcji w module zmusza do jawnego definiowania każdej używanej zmiennej. Auto List Members (Automatyczne wyświetlanie składowych) Edytor VB oferuje dodatkową pomoc podczas wprowadzania kodu, poprzez wyświetlanie listy elementów obiektu. Auto Quick Info (Automatyczne szybkie informacje) Jeśli pole jest zaznaczone, podczas wpisywania funkcji zostanie wyświetlona informacja o niej i o jej argumentach. Auto Data Tips (Automatyczne wskazywanie danych) W trybie śledzenia kodu Edytor VB wyświetla wartość zmiennej, nad którą umieszczony jest wskaźnik myszy. Auto Indent (Automatyczne wcięcia) Ustawienie opcji Automatyczne wcięcia decyduje o tym, czy Edytor VB automatycznie zrobi wcięcie każdej linii kodu o tę samą wielkość, co linii poprzedniej. Wyświetlanie kodu i funkcje pomocy

44 Programowanie w Visual Basic44 Widok modułu z aktywną opcją Automatyczne szybkie informacje Auto Quick Info

45 Programowanie w Visual Basic45 Dostosowywanie środowiska Edytora Visual Basic Drag-and-Drop Text Editing (Edycja tekstu metodą Przeciągnij i upuść) Jeśli pole wyboru Edycja tekstu metodą Przeciągnij i upuść jest zaznaczone, można kopiować i przenosić tekst stosując przeciąganie i upuszczanie. Default to Full Module View (Domyślnie pełny widok modułu) Ustawienie opcji Domyślnie pełny widok modułu decyduje o standardowym stanie nowych modułów (nie ma wpływu na już istniejące). Jeśli opcja ta jest włączona wszystkie procedury w oknie kodu są wyświetlane w jednym przewijanym oknie. Gdy opcja jest wyłączona, w danej chwili można oglądać tylko jedną procedurę. Procedure Separator (Separator procedur) Jeśli pole wyboru Separator procedur jest zaznaczone, na końcu każdej procedury w oknie kodu wyświetlany jest oddzielający pasek. Ustawienia okna kodu

46 Programowanie w Visual Basic46 Pełny widok modułu i separatorów procedur Separator procedur

47 Programowanie w Visual Basic47 Dostosowywanie środowiska Edytora Visual Basic Code Colors (Kolory kodu programu) Opcja Kolory kodu programu pozwala wybrać kolor tekstu, tła oraz kolor wyróżniający elementy kodu. Font (Czcionka) Opcja Czcionka pozwala wybrać czcionkę używaną w modułach VBA. Najlepiej jest stosować czcionkę o stałej szerokości, taką jak Courier New. W czcionce o stałej szerokości wszystkie znaki zajmują tyle samo miejsca w linii. Dzięki temu kod jest bardziej czytelny. Size (Rozmiar) Ustawienie opcji Rozmiar decyduje o rozmiarze czcionki. Przy wyborze należy uwzględnić między innymi rozdzielczość obrazu. Margin Indicator Bar (Wskaźniki marginesowe) Opcja ta decyduje o wyświetlaniu w modułach pionowego paska marginesu. Dzięki temu na marginesie pojawiają się użyteczne wskaźniki graficzne (podczas śledzenia wykonania kodu).

48 Programowanie w Visual Basic48 Wskaźniki marginesowe Wskaźnik marginesowy Kolor komentarzy

49 Programowanie w Visual Basic49 Dostosowywanie środowiska Edytora Visual Basic Ogólne ustawienia Edytora Visual Basic. Generalnie można przyjąć, że standardowa konfiguracja jest optymalna.

50 Programowanie w Visual Basic50 Dostosowywanie środowiska Edytora Visual Basic Ustalenia sposobu wyświetlania elementów okna Edytora VB. Jeżeli element jest dokowany, oznacza to, że będzie wyświetlany zawsze w tym samym miejscu, wzdłuż jednej z krawędzi okna Edytora VB. Ułatwia to jego lokalizowanie i identyfikację.

51 Programowanie w Visual Basic51 Rejestrator makrodefinicji Rejestracja Zarządzanie makrami Dostosowanie menu i paska narzędzi Ważne pytania Makrodefinicje

52 Programowanie w Visual Basic52 Makrodefinicje Prostym i szybkim sposobem utworzenia kodu VB jest czynność rejestrowania makra. Makrodefinicja jest serią poleceń wykonywanych automatycznie w momencie jej uruchomienia. Microsoft Excel posiada wbudowany Rejestrator Makrodefinicji, który zamienia akcje wykonywane za pomocą myszki oraz klawiatury na kod Visual Basic. Rejestrowanie własnych makrodefinicji pozwala na dopasowanie Excela do własnych potrzeb i uczynienie pracy bardziej efektywną. Zapisaną makrodefinicję można powiązać z elementem menu lub przyciskiem.

53 Programowanie w Visual Basic53 Rejestrator makrodefinicji (makr) Rejestrator makr może być stosowany jedynie do rejestracji prostych makr. Automatycznie generowany kod przez rejestrator zawiera dużo zbędnych poleceń. Rejestrator nie ma możliwości pełnego wykorzystania wszystkich funkcji Visual Basic (np. brak pętli). Uruchamianie: Narzędzia -> Makro -> Zarejestruj nowe makro

54 Programowanie w Visual Basic54 Rejestrator makrodefinicji Nazwa makra: Nazwa może zawierać litery, cyfry i znaki podkreślenia, musi zaczynać się od litery i nie może zawierać spacji ani znaków przystankowych. Klawisz skrótu: Kombinacja przycisków, za pomocą której można będzie wywołać stworzone makro. Przechowuj makro w: Miejsce zapisania makra: W aktywnym skoroszycie (Ten skoroszyt); W nowym skoroszycie (Nowy skoroszyt); W osobistym skoroszycie makr (Skoroszyt makr osobistych). Osobisty skoroszyt makr Personal.xlm jest ukrytym skoroszytem, który zawsze pozostaje otwarty. Wszystkie zapisane w nim makrodefinicje są zawsze dostępne. Opis: Dowolny tekst opisujący makro. Zostanie on umieszczony jako komentarz na początku kodu makra. Makro jest przypisane do komputera, na którym zostało utworzone.

55 Programowanie w Visual Basic55 Rejestrator makrodefinicji Rozpoczęcie rejestracji makra: przycisk OK w oknie Rejestruj makro. Na ekranie pokaże się nowy pasek narzędzi z dwoma przyciskami: pierwszy od lewej: Zakończenie rejestracji makra; Drugi: przełącznik: Adresy względne / Adresy bezwzględne. Wszystkie wykonywane od tego momentu operacje w arkuszu Excel będą zapisywane przez rejestrator w postaci kodu Visual Basic. Inny sposób zakończenia rejestracji makra: Narzędzia > Makro > Zatrzymaj rejestrowanie

56 Programowanie w Visual Basic56 Adresy bezwzględne i względne Jedną z opcji, którą można zmieniać podczas rejestracji makrodefinicji jest rodzaj adresów komórek stosowanych podczas rejestracji. W przypadku adresów bezwzględnych Microsoft Excel zapisuje dokładną pozycję każdej wybranej komórki. W przypadku adresów względnych pozycja każdej nowo wybranej komórki jest liczona względem komórki poprzednio wybranej.

57 Programowanie w Visual Basic57 Zarządzanie makrami Uruchamianie: Narzędzia -> Makro -> Makra Nazwa makra: Jeśli operacje mają dotyczyć już istniejącego makra należy wybrać jego nazwę z listy. Przycisk Uruchom: Uruchomienie wybranego z listy makra. Przycisk Anuluj: Zamknij okno (bez żadnej reakcji). Przycisk Wkrocz: Wykonuj makro polecenie po poleceniu. Przycisk Edycja: Edytuj kod makra. Przycisk Utwórz: Tworzenie nowego makra o podanej nazwie. Przycisk Usuń: Usunięcie wybranego makra. Przycisk Opcje: Ustawianie opcji dotyczących makra: Klawisz skrótu: Kombinacja przycisków za pomocą, której można wywołać stworzone makro. Opis: Dowolny tekst opisujący makro umieszczany w jego komentarzu.

58 Programowanie w Visual Basic58 Menu oraz pasek narzędziowy Wybrać z menu: Narzędzia -> Dostosuj W otrzymanym oknie dialogowym można (wybierając zakładkę Polecenia a następnie z listy Kategorie pozycję Makra) stworzyć nową pozycję w menu lub dodać przycisk do dowolnego paska narzędzi. Lewym przyciskiem myszy nacisnąć na elemencie z listy Polecenia i przesunąć go na menu lub pasek narzędzi. Następnie zaznaczyć stworzony przycisk (jedno kliknięcie lewym przyciskiem na tym elemencie) i nacisnąć przycisk Modyfikuj znaczenie. W otrzymanym menu można zarządzać opcjami wybranego przycisku np.: Usuń Nazwa Przypisz makro Po zakończeniu wszystkich operacji należy zamknąć okno przyciskiem Zamknij.

59 Programowanie w Visual Basic59 Ważne pytania Jak podejrzeć kod wygenerowany przez rejestrator makr? Wybrać z menu: Narzędzia > Makro > Makra W oknie zarządcy makr wybrać z listy nazwę makra. Nacisnąć przycisk Edycja. Automatycznie zostanie uruchomiony Edytor Visual Basic i zostanie wyświetlony kod makra.

60 Programowanie w Visual Basic60 Czy można wprowadzać zmiany w kodzie makra? Oczywiście TAK. Należy jednak znać składnie, funkcje oraz metody języka Visual Basic. Pisząc samodzielnie program (to też makro) można osiągnąć znacznie więcej niż poprzez rejestrację makrodefinicji. Programy tworzone samodzielnie przez użytkownika mogą sprawdzać różne warunki i w zależności od nich wykonywać odpowiednie działania, mogą także pytać użytkownika o dane i informować go o postępie w realizacji zadań. Czy kod utworzony przez rejestrator jest optymalny? Niestety NIE! Rejestrator makrodefinicji tworzy kod, który odpowiada większości przeprowadzanych przez użytkownika czynności. Często jednak w module Visual Basic zostaje zapisanych więcej instrukcji niż potrzeba aby operacja przebiegła prawidłowo. Należy usunąć nadmiarowy kod, aby makrodefinicja w optymalny sposób robiła dokładnie to, czego zażyczył sobie użytkownik. Ważne pytania

61 Programowanie w Visual Basic61 Programowanie w Visual Basic część 1 Zmienne Typy danych Stałe Tablice Komentarze

62 Programowanie w Visual Basic62 Zmienne VBA wykonuje operacje na danych. Dane są przechowywane w obiektach np. w komórkach arkusza lub specjalnie utworzonych zmiennych. Zmienna to obiekt służący do reprezentacji różnych wartości np.: Wartości logicznych (Prawda lub Fałsz) Liczb całkowitych Liczb zmiennoprzecinkowych Łańcuchów znakowych (słowo) Dat Fizyczna reprezentacja zmiennej to określony obszar w pamięci komputera.

63 Programowanie w Visual Basic63 Nazwy zmiennych (1) Nadawanie nazw zmiennym: Można używać wszystkich liter i cyfr ale pierwszym znakiem musi być litera. Wielkość liter nie ma znaczenia, ale w celu zwiększenia czytelności kodu lepiej jest różnicować rozmiar np.: NumerWiersza = numerwiersza = NUMERWIERSZA Nie można używać kropek, spacji czy innych znaków specjalnych: #, $, %, &, ! Nazwa może mieć maksymalnie 254 znaki. Nazwa nie może być taka jak słowa zastrzeżone np.: Next, For, If

64 Programowanie w Visual Basic64 Nazwy zmiennych (2) Konwencją jest nadawanie nazw zmiennym tak, aby po nazwie można było się zorientować jaki typ danych reprezentują. Podanie typu danych w nazwie zmiennej polega na dodaniu standardowego prefiksu pisanego małymi literami – zgodnie z poniższym zestawieniem: Boolean b Integer i Long l Single s Double d Currency c Data/Time dt String str Object obj Variant v Def. Uzytkownika u dtDataUrodzenia iSuma dPodatek cZarobki dtDataUrodzenia iSuma dPodatek cZarobki

65 Programowanie w Visual Basic65 Typy danych (1) Poprzez typ danych definiujemy jaki rodzaj danych ma przechowywać zmienna oraz jaki obszar pamięci zostanie jej przydzielony. VBA potrafi ustalić automatycznie typ danych. Wady takiego rozwiązania: Wolniejsze wykonywanie programu. Nieefektywne wykorzystanie pamięci.

66 Programowanie w Visual Basic66 Typy danych (2)

67 Programowanie w Visual Basic67 Deklarowanie typu zmiennej Jeśli brak jest w programie deklaracji zmiennej używany jest typ domyślny Variant. Dane przechowywane jako dane typu Variant zmieniają swój typ w zależności od wykonywanych na nich operacjach. Poniższa procedura demonstruje przyjmowanie różnych typów danych przez taką zmienną: Sub VariantDemo() MojaZmienna = 123 MojaZmienna = MojaZmienna / 2 MojaZmienna = Odpowiedź: & MojaZmienna MsgBox MojaZmienna End Sub

68 Programowanie w Visual Basic68 Ustalanie typu danych Aby ustalić typ danych zmiennej można skorzystać z funkcji o nazwie TypeName Oto modyfikacja poprzedniej procedury. Po każdym kroku wyświetlany będzie typ danych zmiennej MojaZmienna : Sub VariantDemo() MojaZmienna = 123 MsgBox TypeName (MojaZmienna) MojaZmienna = MojaZmienna / 2 MsgBox TypeName (MojaZmienna) MojaZmienna = Odpowiedź: & MojaZmienna MsgBox TypeName (MojaZmienna) MsgBox MojaZmienna End Sub String Double

69 Programowanie w Visual Basic69 Wymuszanie deklarowania wszystkich zmiennych Aby wymusić deklarowanie wszystkich używanych zmiennych wystarczy umieścić na początku modułu VBA następującą instrukcję: Option Explicit powoduje to zatrzymanie wykonania programu po każdym natrafieniu na nazwę zmiennej, która nie została wcześniej zadeklarowana.

70 Programowanie w Visual Basic70 Najbardziej popularny sposób deklarowania zmiennej lokalnej to użycie instrukcji Dim (skrót od Dimension) np.: Dim NumerWiersza As Integer Dim x As Long Dim DataAktualna As Date Dim Oprocentowanie As Single Dim ZawartoscKomorki As String Dim Imie As String * 20 Dim Temp Dim i, j, x As Integer Dim i As Integer, j As Integer, x As Integer Dim i As Integer, j As Double Deklarowanie typu zmiennej

71 Programowanie w Visual Basic71 Zasięg zmiennych (1) Zmienne o zasięgu całego modułu: Instrukcja Dim przed pierwszą procedurą w module: Dim WartoscCalkowita As Integer Sub Proc1() … End Sub Sub Proc2() … End Sub

72 Programowanie w Visual Basic72 Zasięg zmiennych (2) Zmienne widoczne we wszystkich modułach: Instrukcja Public przed pierwszą procedurą w module: (tylko w modułach standardowych VBA, nie można używać zmiennych typu Public w modułach arkusza czy formularza) Public WartoscCalkowita As Integer Sub Proc1() … End Sub Sub Proc2() … End Sub

73 Programowanie w Visual Basic73 Zasieg zmiennych (3) Zmienne lokalne: Instrukcje Dim, Static, Private wewnątrz procedury: Sub NowaProc() Dim x As Integer Static Licznik As Integer Private NumerWiersza As Integer End Sub Zmienne lokalne zadeklarowane ze pomocą instrukcji Dim oraz Private są usuwane z pamięci po zakończeniu procedury. Zmienne lokalne zadeklarowane ze pomocą instrukcji Static zachowują swoją wartość nawet po zakończeniu procedury np.: Sub Proc() Static Licznik As Integer Licznik = Licznik + 1 MsgBox(Procedura została wykonana już: _ & Licznik & razy) End Sub

74 Programowanie w Visual Basic74 Wartości zmiennych Przypisanie wartości do zmiennej następuje poprzez użycie operatora równości np.: x = 1 NumerWiersza = 100 Oprocentowanie = 0.05 BrakDanych = False Uzytkownik = Zenek DataKonferencji = #10/31/2001# x = x + 1

75 Programowanie w Visual Basic75 Stosowanie zmiennych Łańcuchowe: Dim x As String x = Ala ma kota Data i czas: Dim d As Date d = #1/1/2000# d = #12:00:00# Zmienne boolowskie: Dim x As Boolean x = True Zmienne całkowite: Dim x As Integer x = 3 Zmiennoprzecinkowe: Dim x As Double x = 3.14

76 Programowanie w Visual Basic76 Zmienne obiektowe (1) Zmienne obiektowe: Reprezentują całe obiekty takie jak zakres czy arkusz. Pozwalają uprościć kod programu. Umożliwiają szybsze wykonywanie programu. Deklaracja: Dim o As Object Public o As Object Zmiennej obiektowej przypisujemy wartość przy pomocy słowa kluczowego Set : Set o = Worksheets(Ark1).Range(A1) Przykłady: Dim zakres As Range Set zakres = Worksheets(Ark1).Range(A1) Dim arkusz As Worksheet Set arkusz = Worksheets(Ark1)

77 Programowanie w Visual Basic77 Upraszczanie kodu. Drugi wariant prezentuje procedurę z zadeklarowaną zmienną obiektową: Zmienne obiektowe (2) Sub BezZmObiekt() Worksheets(Arkusz1).Range(A1).Value = 124 Worksheets(Arkusz1).Range(A1).Font.Bold = True Worksheets(Arkusz1).Range(A1).Font.Italic = True End Sub Sub ZmObiekt() Dim MojaKomórka As Range Set MojaKomórka = Worksheets(Arkusz1).Range(A1) MojaKomórka.Value = 124 MojaKomórka.Font.Bold = True MojaKomórka.Font.Italic = True End Sub

78 Programowanie w Visual Basic78 Deklarowanie zmiennych - powtórzenie Zmienne lokalne: Instrukcje Dim, Static, Private wewnątrz procedury; Zmienne o zasięgu całego modułu: Instrukcja Dim przed pierwszą procedurą w module; Zmienne widoczne we wszystkich modułach: Instrukcja Public przed pierwszą procedurą w module.

79 Programowanie w Visual Basic79 Deklarowanie stałych Wartość stałej nie zmienia się podczas wykonywania programu. Deklaracje stałej np.: Const PI As Single = 3.14 Const Oprocentowanie As Single = Const Stopa = 0.44, Okres = 12 Public Const LiczbaPunktow As Integer = 5 Uwaga: Stałe podobnie jak zmienne mają swój zasięg. Zwykle podaje się w deklaracji typ danych, gdyż stała nigdy nie zmienia swej wartości.

80 Programowanie w Visual Basic80 Tablice (1) Tablica: grupa elementów tego samego typu występujących pod wspólną nazwą. Odwołanie do elementu tablicy następuje poprzez podanie jej nazwy oraz indeksu. Deklarowanie tablic wygląda podobnie jak deklaracje zmiennych przy czym należy dodatkowo podać wartość [początkową indeksu oraz] wartość końcową indeksu. Przykłady: Dim Tablica1(1 To 100) As String * 2 Dim Tablica2(0 To 100) As String * 2 Public Tablica3(100) As String * 20 VBA przyjmuje domyślnie dolną wartość indeksu 0

81 Programowanie w Visual Basic81 Tablice (2) Aby pominąć dolną wartość indeksu i spowodować, że w każdej tablicy tą wartością jest domyślnie np. 1 należy umieścić przed dowolną procedurą w module instrukcję: Option Base 1 Deklarowanie tablic wielowymiarowych Tablice w VBA mogą mieć do 60 wymiarów. Dim Tablica4(1 To 10, 1 To 10) As Integer Dim Tablica5(0 To 10, 0 To 20, 0 To 100) _ As Long

82 Programowanie w Visual Basic82 Tablice (3) Odwoływanie się do elementów tablicy: Jednowymiarowej: Tablica1(4) = Ala ma kota Dwuwymiarowej: Tablica4(4,5) = 25 Trójwymiarowej: Tablica5(1,2,10) = 15

83 Programowanie w Visual Basic83 Typy danych definiowane przez użytkownika VBA pozwala utworzyć własne typy danych. Definiowanie typu danych musi przebiegać poza procedurami, na początku modułu. Typy takie są zawsze publiczne. Type KlientInfo Firma As String * 20 Kontakty As String * 15 Kierunkowy As Integer DziałSprzedaży As Long End Type W module należy zadeklarować zmienną tego typu – zwykle jest to deklaracja tablicy: Dim Klienci(1 To 100) As KlientInfo

84 Programowanie w Visual Basic84 Odwołanie do składników tej zmiennej Odwołanie do poszczególnych składników tablicy : Klienci(1).Firma = InterFlora Klienci(1).Kontakt = Anna Madej Klienci(1).Kierunkowy = 3 Klienci(1).DziałSprzedaży = Wykonywanie operacji na całych elementach takiej tablicy: Klienci(2) = Klienci(1) Zamiast Klienci(2).Firma = Klienci(1).Firma Klienci(2).Kontakt = Klienci(1).Kontakt itd.

85 Programowanie w Visual Basic85 Komentarze Aby wstawić komentarz w VBA należy: Poprzedzić tekst mający być komentarzem znakiem apostrofu: Dim Tab1(1 To 100) As Long dane wejściowe Poprzedzić cały wiersz słowem: rem rem dane wejściowe Dim Tab1(1 To 100) As Long

86 Programowanie w Visual Basic86 Programowanie w Visual Basic część 2 Przypisywanie wyrażeń Operatory matematyczne Operatory logiczne Operatory porównania Sterowanie wykonaniem Konwersje typów danych

87 Programowanie w Visual Basic87 Przypisywanie wyrażeń Wyrażenie to kombinacja słów kluczowych, operatorów, zmiennych i stałych, której wartością jest łańcuch, liczba lub obiekt. Wyrażenie może wykonywać obliczenia, przetwarzać tekst lub testować dane. Operator przypisania wartości wyrażenia do zmiennej to w VBA znak równości: = Przykłady: x = 1 x = x + 1 y = x*x + 2*x –10 ActiveWindow.DisplayGridlines = True ustalenie właściwości: Cells(2,3).Value = 102

88 Programowanie w Visual Basic88 Operatory matematyczne + dodawanie - odejmowanie * mnożenie / dzielenie ^ podnoszenie do potęgi & łączenie łańcuchów \ dzielenie całkowite Mod dzielenie modulo (z resztą)

89 Programowanie w Visual Basic89 Operatory logiczne Not negacja logiczna wyrażenia And iloczyn logiczny dwóch wyrażeń Or suma logiczna dwóch wyrażeń XoR suma rozłączna dwóch wyrażeń Eqv spr. równoważności logicznej dwóch wyrażeń Imp implikacja dwóch wyrażeń

90 Programowanie w Visual Basic90 Operatory porównania = równe > większe niż < mniejsze niż >= większe lub równe <= mniejsze lub równe <> różne od

91 Programowanie w Visual Basic91 Wykonywanie operacji Kolejność wykonywania operacji jest taka sama jak w Excelu; najwyższy priorytet mają nawiasy. ActiveWindow.DisplayGridlines = True ActiveWindow.DisplayGridlines = Not _ ActiveWindow.DisplayGridlines Przypisanie wartości True powoduje ustalenie określonej właściwości. Zastosowanie operatora Not powoduje zmianę tej właściwości. MsgBox ActiveSheet.Name = Arkusz1 And ActiveCell.Row = 1 Użycie operatora logicznego And powoduje wyświetlenie wartości True, gdy aktywnym arkuszem jest Arkusz 1 i aktywna komórka znajduje się w wierszu 1. MsgBox ActiveSheet.Name = Arkusz1 Or ActiveSheet.Name = _ Arkusz2 Użycie operatora logicznego Or powoduje wyświetlenie wartości True, gdy aktywnym arkuszem jest Arkusz 1 lub Arkusz 2.

92 Programowanie w Visual Basic92 Sterowanie wykonaniem Sterowanie wykonaniem polega na pomijaniu lub wielokrotnym wykonywaniu pewnych fragmentów kodu oraz sprawdzaniu warunków w celu ustalenia dalszego przebiegu wykonania procedury. Najważniejsze sposoby sterowania wykonaniem: Konstrukcja If – Then Konstrukcja Select Case Pętla For – Next Pętla Do While Pętla Do Until Instrukcja GoTo Niektóre procedury VBA z chwilą uruchomienia są wykonywane linia po linii – od początku do samego końca (np. wszystkie zarejestrowane makra). Często jednak użytkownik (program) może sam zadecydować, które linie programu zostaną wykonane i ile razy.

93 Programowanie w Visual Basic93 If – Then (1) If warunek Then instrukcja If warunek Then instrukcja prawda End If If warunek Then instrukcja prawda Else instrukcja fałsz End If Warunkowe wykonywane jednej lub wielu instrukcji. If warunek Then instrukcja prawda Else If warunek2 Then instrukcja prawda2 Else instrukcja fałsz2 End If Zagnieżdżenie instrukcji

94 Programowanie w Visual Basic94 If – Then (2) If warunek Then instrukcje prawda ElseIf warunek2 Then instrukcje prawda2 ElseIf warunek3 Then instrukcje prawda3 Else instrukcje domyślne End If If Ilość >= 0 And Ilość < 25 Then Rabat = 0.03 ElseIf Ilość >= 25 And Ilość < 50 Then Rabat = 0.05 ElseIf Ilość >= 50 And Ilość < 75 Then Rabat = 0.08 ElseIf Ilość >= 75 Rabat = 0.11 End If Testowanie wielu warunków Testowanie wielu warunków

95 Programowanie w Visual Basic95 Select Case (1) Select Case wyrażenieTestujące Case listaWyrażeń1 instrukcje1 Case listaWyrażeń2 instrukcje2 Case Else instrukcje domyślne End Select Warunkowe wykonywane jednej lub wielu instrukcji. Alternatywa dla If – Then - Else Select Case Ilość Case 0 To 24 Rabat = 0.03 Case 25 To 49 Rabat = 0.05 Case 50 To 74 Rabat = 0.08 Case Is >= 75 Rabat = 0.11 End Select Wyjście z konstrukcji Select case następuje po znalezieniu i wykonaniu pierwszego pasującego przypadku – aby uzyskać maksymalnie efektywny kod, można sprawdzać najczęściej zachodzący przypadek na samym początku.

96 Programowanie w Visual Basic96 Select Case (2) Zagnieżdżanie instrukcji Select Case Application.WindowState Case xlMaximized: MsgBox Aplikacja maksymalna Case xlMinimized: MsgBox Aplikacja minimalna Case xlNormal: MsgBox Aplikacja normalna Select Case ActiveWindow.WindowState Case xlMaximized: MsgBox Zeszyt maksymalny Case xlMinimized: MsgBox Zeszyt minimalny Case xlNormal: MsgBox Zeszyt normalny End Select

97 Programowanie w Visual Basic97 For - Next For licznik = start To koniec [Step przyrost] [Instrukcje] [Exit For] [Instrukcje] Next [licznik] For licz = 1 To 10 suma = suma + licz Next licz For licz = 1 To 10 Step 2 suma = suma + licz Next licz Pętla umożliwia wykonywanie tego samego bloku wielokrotnie. Liczba wykonań pętli jest znana, z góry ustalona. For x = 0 To 10 For y = 0 To 100 suma = suma + tabela(x, y) Next y Next x Zagnieżdżenie instrukcji Licznik – zmienna sterująca

98 Programowanie w Visual Basic98 For Each - Next For Each element In grupa [Instrukcje] [Exit For] [Instrukcje] Next [element] Dim tablica(5) As Integer For i = 0 To 5 Tablica(i) = Rnd Next i For Each n In tablica Debug.Print n Next n Pętla umożliwia wykonywanie operacji dla wszystkich elementów kolekcji

99 Programowanie w Visual Basic99 Do While Do While [warunek] [Instrukcje] [Exit Do] [Instrukcje] Loop Do [Instrukcje] [Exit Do] [Instrukcje] Loop While [warunek] Pętla wykonuje się dopóki podany warunek jest spełniony. Dim licz As Integer licz = 10 Do While licz >= 1 suma = suma + licz licz = licz - 1 Loop Do ActiveCell.Value = 0 ActiveCell.Offset(1, 0).Select Loop While Not IsEmpty(ActiveCell)

100 Programowanie w Visual Basic100 Do Until Do [Until warunek] [Instrukcje] [Exit Do] [Instrukcje] Loop Do [Instrukcje] [Exit Do] [Instrukcje] Loop [Until warunek] Pętla wykonuje się do momentu aż warunek zostanie spełniony. Dim licz As Integer licz = 10 Do Until licz < 1 suma = suma + licz licz = licz - 1 Loop

101 Programowanie w Visual Basic101 Programowanie w Visual Basic część 3 Procedury (Sub) Przekazywanie parametrów do procedur Wywoływanie procedur Funkcje (Function) Przekazywanie parametrów do funkcji Wywoływanie funkcji Obsługa błędów Funkcje standardowe: MsgBox InputBox inne funkcje wbudowane

102 Programowanie w Visual Basic102 Procedury - Sub Procedura to grupa instrukcji umieszczonych w module, wykonujących określone zadanie. [Private | Public] [Static] Sub nazwa (lista_arg) [instrukcje] [Exit Sub] [instrukcje] End Sub Private – procedura jest dostępna tylko dla pozostałych procedur z tego samego modułu. Public – procedura jest dostępna dla wszystkich procedur z wszystkich modułów. Standardowo wszystkie procedury są publiczne. Static – zmienne procedury są zachowywane po jej zakończeniu. Private – procedura jest dostępna tylko dla pozostałych procedur z tego samego modułu. Public – procedura jest dostępna dla wszystkich procedur z wszystkich modułów. Standardowo wszystkie procedury są publiczne. Static – zmienne procedury są zachowywane po jej zakończeniu.

103 Programowanie w Visual Basic103 Przekazywanie argumentów do procedur (1) Argumenty dostarczają procedurze dane wejściowe, które mogą być wykorzystywane podczas jej wykonywania. Do procedury można przekazać między innymi: Zmienne Stałe Literały (nie zmienne) Tablice Obiekty Składnia argumentów: [Optional] [ByVal | ByRef] [ParamArray] nazwa[( )] [As typ] [= wartość_domyślna]

104 Programowanie w Visual Basic104 Przekazywanie argumentów (2) Procedura bez argumentów: Sub proc1() Procedura ze stałą liczbą argumentów: Sub proc2(wiersz As Integer, kol As Long) Procedura może mieć część argumentów wymaganych a część opcjonalnych: Sub proc3(wiersz As Integer, Optional kol) Procedura może mieć wszystkie argumenty opcjonalne: Sub proc4(Optional wiersz, Optional kol=5) Procedura o nieokreślonej liczbie parametrów: Sub proc5(ParamArray tab())

105 Programowanie w Visual Basic105 Argument może być przekazywany do procedury na dwa sposoby: ByRef – przez referencję (standardowo) – polega na przekazaniu adresu pamięci zmiennej; ByVal – przez wartość – polega na przekazaniukopii oryginalnej zmiennej. W konsekwencji zmiana argumentu w procedurze nie ma wpływu na oryginalną zmienną. Przekazywanie argumentów (3)

106 Programowanie w Visual Basic106 Wywoływanie procedur Polecenie Run>Run Sub/User Form w Edytorze VB. Polecenie Narzędzia>Makro>Makra w Excelu. Skrót klawiszowy. Wybranie pozycji z menu lub paska narzędziowego (element dodany przez użytkownika). Za pomocą kliknięcia obiektu. Z wnętrza innej procedury. W momencie wystąpienia zdarzenia.

107 Programowanie w Visual Basic107 Wywoływanie procedur za pomocą kliknięcia obiektu. W Excelu istnieje wiele różnych obiektów, które można umieszczać na arkuszu roboczym lub na arkuszu wykresu i przypisywać do nich makra. Obiekty te są dostępne za pomocą następujących trzech pasków narzędzi: Rysowanie Formularze Przybornik Formantów

108 Programowanie w Visual Basic108 Wywoływanie procedur za pomocą kliknięcia obiektu. Pasek narzędzi Przybornik formantów zawiera formanty ActiveX – te same, które są używane w formularzach użytkownika (UserForm). Pasek narzędzi Formularze zawiera podobne formanty, ale nie są to formanty ActiveX – istnieją dla zachowania zgodności ze starszymi wersjami Excela (Excel 5 i Excel 95). Czasem są wygodniejsze w użyciu.

109 Programowanie w Visual Basic109 Przypisanie procedury do obiektu. Należy wybrać np. przycisk z paska narzędzi Formularze. Aby utworzyć przycisk należy go narysować na arkuszu. Excel automatycznie otworzy okno dialogowe Przypisz makro.

110 Programowanie w Visual Basic110 Aby przypisać makro do kształtu należy wybrać odpowiedni kształt z autokształtów lub narysować własny. Z menu podręcznego należy wybrać polecenie Przypisz makro… Przypisanie procedury do obiektu.

111 Programowanie w Visual Basic111 Wywoływanie procedur Z wnętrza innej procedury: Aby precyzyjnie wskazać procedurę w innym skoroszycie, trzeba podać nazwę projektu, nazwę modułu i na końcu nazwę procedury: Innym sposobem jest użycie metody Run obiektu Application: NazwaProcedury Call NazwaProcedury TwojaSub Call TwojaSub MójProjekt.MójModuł.MojaSub Call MójProjekt.MójModuł.MojaSub Application.Run makra_budżetowe.xls!Konsoliduj - Wywołanie procedury Konsoliduj znajdującej się w skoroszycie makra_budżetowe.xls

112 Programowanie w Visual Basic112 Po co wywoływać inne procedury? Dbanie o przejrzystość kodu. Mniejsze procedury są łatwiejsze do rozszyfrowania i śledzenia. Takie postępowanie jest w dobrym stylu! Im prostszy kod, tym łatwiej go zmodyfikować. Wywoływanie jednej procedury w kilku miejscach eliminuje redundancję. Można utworzyć cały zbiór procedur ogólnego przeznaczenia i importować moduł do bieżącego projektu i korzystać z niego w razie potrzeby. Przykład przejrzystej procedury: Przykład przejrzystej procedury:

113 Programowanie w Visual Basic113 Wywołanie procedury w momencie wystąpienia zdarzenia Zdarzeniem jest np. otwarcie skoroszytu, zaznaczenie komórki, kliknięcie obiektu, zapisanie skoroszytu itd. Procedura taka nazywa się Procedurą obsługi zdarzenia. Procedury takie mają charakterystyczne nazwy składające się z nazwy obiektu, znaku podkreślenia i nazwy zdarzenia. Np. procedura wykonywana w momencie otwierania skoroszytu ma nazwę: Workbook_Open Procedury te są przechowywane w oknie kodu konkretnego obiektu. Przykład:

114 Programowanie w Visual Basic114 Procedura Workbook_Open Lista Declarations

115 Programowanie w Visual Basic115 Przykład procedury obsługującej zdarzenie Worksheet_SelectionChange Jest wykonywana za każdym razem, gdy użytkownik zmieni zaznaczenie na arkuszu. Usuwa cieniowanie aktywnej komórki. Kolumna i wiersz aktywnej komórki zmieniają kolor na jasnożółty.

116 Programowanie w Visual Basic116 Procedury obsługujące zdarzenia Excel ma możliwość monitorowania wielu zdarzeń. Można je podzielić na: Zdarzenia skoroszytu ( Workbook ) Zdarzenia arkusza ( Worksheet ) Zdarzenia wykresu ( Chart ) Zdarzenia aplikacji ( Application ) Zdarzenia formularza ( UserForm ) Zdarzenia niezwiązane z obiektami. Często występują po sobie całe sekwencje zdarzeń.

117 Programowanie w Visual Basic117 Procedury obsługujące zdarzenia Niektóre procedury zdarzeń przyjmują argumenty. Private Sub_ Workbook_SheetActivate(ByVal Sh As Object) End Sub Procedura przyjmuje tylko jeden argument (Sh), który reprezentuje aktywny arkusz. W tym wypadku zmienna Sh została zadeklarowana jako Object, gdyż argumentem tej funkcji może być zarówno arkusz Worksheet jak i arkusz wykresu Chart.

118 Programowanie w Visual Basic118 Procedury obsługujące zdarzenia Private Sub_ Workbook_BeforePrint(Cancel As Boolean) Ans = MsgBox(Gotowy do wydruku?,vbYesNo) If Ans = vbNo Then Cancel = False End Sub Wiele procedur obsługujących zdarzenie wykorzystuje argument typu Boolean o nazwie Cancel. Wartość zmiennej Cancel przekazywanej do procedury wynosi True. Jednak procedura może zmienić tę wartość Na False, co spowoduje przerwanie zadania drukowania.

119 Programowanie w Visual Basic119 Zdarzenia obsługiwane przez Excela Zdarzenia skoroszytu ( Workbook ) – muszą być umieszczone w module obiektu ThisWorkbook Activate – skoroszyt jest uaktywniany Open – skoroszyt jest otwierany bądź tworzony BeforeClose – tuż przed zamknięciem skoroszytu BeforeSave – tuż przed zachowaniem skoroszytu BeforePrint – skoroszyt lub jego fragment zostanie wydrukowany

120 Programowanie w Visual Basic120 Zdarzenia obsługiwane przez Excela Zdarzenia skoroszytu ( Workbook ) cd. Deactivate – skoroszyt przestaje być aktywny. NewSheet – dodawany jest nowy arkusz. SheetActivate – uaktywniany jest dowolny arkusz. WindowAcrivate – uaktywniane jest dowolne okno skoroszytu.

121 Programowanie w Visual Basic121 Zdarzenia obsługiwane przez Excela Zdarzenia arkusza ( Worksheet ) Activate – arkusz jest uaktywniany BeforeDoubleClick – arkusz kliknięto dwukrotnie. Change – modyfikacja zawartości komórki SelectionChange – zmiana położenia kursora zaznaczenia Calculate – arkusz jest przeliczany. Deactivate – arkusz przestaje być aktywny. Private Sub Worksheet_Change(ByVal Target As Excel.Range) MsgBox Zakres & Target.Address & uległ zmianie. End Sub

122 Programowanie w Visual Basic122 Zdarzenia obsługiwane przez Excela Zdarzenia wykresu ( Chart ) Select – obiekt wykresu jest zaznaczany SeriesChange – modyfikacja serii danych wykresu. Resize – zmiana rozmiaru wykresu Zdarzenia aplikacji ( Application ) NewWorkbook – tworzony jest nowy skoroszyt WorkbookBeforeClose – tuż przed zamknięciem dowolnego skoroszytu SheetChange – zmianie ulega dowolna komórka w jednym z otwartych skoroszytów.

123 Programowanie w Visual Basic123 Zdarzenia obsługiwane przez Excela Zdarzenia formularza ( UserForm ) Initialize – przed wyświetleniem formularza na ekranie Click – po kliknięciu przycisku. DblClick – po dwukrotnym kliknięciu przycisku KeyDown – po naciśnięciu klawisza KeyUp – po zwolnieniu klawisza Zoom – formularz jest powiększany Terminate – formularz jest zamykany

124 Programowanie w Visual Basic124 Zdarzenia formularza Zdarzenia formularza mogą być dowolnie określone za pomocą listy Declarations.

125 Programowanie w Visual Basic125 Zdarzenia nie związane z obiektami Excela Zdarzenia występujące na poziomie aplikacji. Powinny być umieszczane w ogólnych modułach VBA. OnTime – występuje w określonym czasie OnKey – występuje po kliknięciu przycisku.

126 Programowanie w Visual Basic126 Funkcje - Function Są to procedury, których zadaniem jest wykonanie określonych operacji (obliczeń) i zwrócenie ich wyniku. Funkcje należy tworzyć i umieszczać w modułach. Jeden moduł może zawierać dowolną liczbę funkcji. [Private | Public] [Static] Function nazwa [(lista_arg)] [As typ] [instrukcje] [Exit Function] [instrukcje] End Function

127 Programowanie w Visual Basic127 Przekazywanie argumentów do funkcji (1) Argumenty dostarczają funkcji dane wejściowe, które mogą być wykorzystywane podczas jej wykonywania. Do funkcji można przekazać między innymi: Zmienne Stałe Literały Tablice Obiekty Składnia argumentów: [Optional] [ByVal | ByRef] [ParamArray] nazwa[( )] [As typ] [= wartość_domyślna]

128 Programowanie w Visual Basic128 Przekazywanie argumentów (2) Funkcja bez argumentów: Function fun1() Funkcja ze stałą liczbą argumentów: Function fun2(wie As Integer, kol As Long) Funkcja może mieć część argumentów wymaganych a część opcjonalnych: Function fun3(wie As Integer, Optional kol) Funkcja może mieć wszystkie argumenty opcjonalne: Function fun4(Optional wie, Optional kol=5) Funkcja o nieokreślonej liczbie parametrów: Function fun5(ParamArray tab())

129 Programowanie w Visual Basic129 Wywoływanie funkcji Z wnętrza procedury: Razem = SumaTab(tab) W formułach arkusza: =SumaTab(A1:A100) =Zeszyt2.xls!SumaTab(A1:A100)

130 Programowanie w Visual Basic130 Funkcje wbudowane VBA udostępnia całą gamę funkcji wbudowanych, które pozwalają uprościć obliczenia i operacje (ponad 130 funkcji). Często pozwalają one wykonać działanie, które inaczej byłoby bardzo trudne lub wręcz niemożliwe do zrealizowania. Wiele funkcji VBA przypomina funkcje Excela (wiele jest nawet identycznych). Na przykład funkcja UCase, która zmienia litery łańcucha na wielkie, jest równoważna excelowej funkcji arkusza LITERY.WIELKIE.

131 Programowanie w Visual Basic131 Funkcje wbudowane Aby uzyskać listę funkcji podczas pisania kodu, należy wpisać VBA i zaraz potem kropkę (.). Jeśli to nie zadziała, należy się upewnić, czy jest zaznaczone pole wyboru Auto List Members (Tools > Options, karta Editor).

132 Programowanie w Visual Basic132 Funkcje wbudowane – przegląd (1) Len – zwraca ilość znaków łańcucha lub liczbę bajtów pamięci, jaka jest potrzebna do przechowywania argumentu. Funkcje numeryczne: Sqr – oblicza pierwiastek kwadratowy, Atn – zwraca wartość arcustangens liczby, Cos – zwraca wartość cosinus liczby, Exp – zwraca podstawę logarytmu naturalnego liczby podniesionej do odpowiedniej potęgi, Sin – zwraca wartość sinus liczby, Tan - zwraca wartość tangens liczby. Log - zwraca wartość logarytmu naturalnego liczby.

133 Programowanie w Visual Basic133 Funkcje numeryczne - przykład Procedura, która oblicza pierwiastek kwadratowy z wartości zmiennej za pomocą funkcji VBA Sqr, zapisuje wynik do innej zmiennej, a następnie wyświetla go w oknie MsgBox : Wynik

134 Programowanie w Visual Basic134 Funkcje wbudowane – przegląd (2) Funkcje łańcuchowe: Chr(int) – zwraca znak ASCII o kodzie int. Zmienna = Chr(84) wynik: T UCase(str) – zwraca wartość typu Variant(String) zawierającą podany ciąg str zamieniony na litery wielkie. Zmienna = UCase(Ala ma kota) wynik: ALA MA KOTA LCase(str) – zamienia wszystkie litery w ciągu str na małe. LTrim(str), RTrim(str), Trim(str) – każda z tych funkcji zwraca wartość typu Variant(string) zawierająca kopię podanego ciągu znaków: bez spacji wiodących ( LTrim ), bez spacji końcowych ( RTrim ) lub bez spacji wiodących i końcowych ( Trim ). MsgBox (B & LTrim( Ala ma kota ) & B wynik: BAla ma kota B

135 Programowanie w Visual Basic135 Funkcje wbudowane – przegląd (3) Funkcje łańcuchowe: Left(str, int) – zwraca wartość typu Variant(String) zawierającą podaną liczbę znaków int począwszy od lewej strony ciągu znaków str. Mid(str, intStart [, intLen]) - zwraca wartość typu Variant(String) zawierającą podaną liczbę znaków z ciągu znaków, od podanej pozycji. Right(str, int) – zwraca wartość typu Variant(String) zawierającą podaną liczbę znaków int począwszy od prawej strony ciągu znaków str. Str(liczba) – zwraca znakową reprezentację liczby.

136 Programowanie w Visual Basic136 Funkcje łańcuchowe - przykład zmienna = Left("Ala ma kota", 3) wynik: Ala zmienna = Right("Ala ma kota", 4) wynik: kota zmienna = Mid("Ala ma kota", 5, 2) wynik: ma

137 Programowanie w Visual Basic137 Funkcje wbudowane – przegląd (4) Funkcje daty i czasu: Date – zwraca bieżącą datę systemową. DateAdd – dodaje przedział czasowy do danej daty. DateDiff – zwraca przedział czasowy między dwoma datami. Day – zwraca dzień miesiąca podanej daty. Month – zwraca miesiąc podanej daty. Minute – zwraca liczbę określającą minutę. Now – zwraca bieżącą datę i czas systemowy. Time – zwraca bieżący czas systemowy. Weekday – zwraca numer oznaczający dzień tygodnia.

138 Programowanie w Visual Basic138 Funkcje daty i czasu - przykład zmienna = Now() wynik: :40:00 zmienna = Year(Now) wynik: 2006 zmienna = Month(Now) wynik: 10 zmienna = Day(Now) wynik: 29 zmienna = WeekDay(Now) wynik: 7

139 Programowanie w Visual Basic139 Funkcje wbudowane – przegląd (5) Funkcje logiczne: IsArray – zwraca True, jeśli zmienna jest tablicą. IsDate – zwraca True, jeśli zmienna jest datą. IsNull – zwraca True, jeśli wyrażenie nie zawiera danych. IsNumeric – zwraca True, jeśli wyrażenie można potraktować jako wartość numeryczną. varSprawdzajaca = IsNumeric(varSprawdzana)

140 Programowanie w Visual Basic140 Wywoływanie funkcji Excela Jeżeli VBA nie ma odpowiednika funkcji używanej w Excelu, można wywołać funkcję arkuszową Excela bezpośrednio z poziomu programu VBA. Wystarczy, że poprzedzi się jej nazwę odwołaniem do obiektu WorksheetFunction. Na przykład VBA nie ma funkcji zamieniającej radiany na stopnie. Ponieważ Excel ma funkcję arkuszową służącą właśnie do tego, można wywołać następującą instrukcję VBA: Deg = Application.WorksheetFunction.Degrees(3.14) Obiekt WorksheetFunction został wprowadzony w Excelu 97. Aby zachować zgodność z poprzednimi wersjami, można pominąć odwołanie do obiektu WorksheetFunction następująco: Deg = Application.Degrees(3.14)

141 Programowanie w Visual Basic141 Funkcje Excela Należy pamiętać, że nie można używać funkcji arkusza, które mają swoje odpowiedniki w VBA. Na przykład nie można skorzystać w VBA z excelowej funkcji arkusza PIERWIASTEK, gdyż VBA dysponuje własną wersją tej funkcji o nazwie Sqr. Nie można też mieszać zapisu. W efekcie podana niżej instrukcja spowoduje błąd: MsgBox Application.WorksheetFunction.Sqr(123) błąd

142 Programowanie w Visual Basic142 Funkcje Excela - przykład Poniższy przykład demonstruje sposób użycia w procedurze VBA excelowej funkcji arkusza ROMAN. Ta rzadko wykorzystywana funkcja dokonuje konwersji liczby dziesiętnej na rzymską.

143 Programowanie w Visual Basic143 Funkcja MsgBox Funkcja MsgBox jest jedną z najbardziej użytecznych funkcji VBA. Funkcja ta zwraca pojedynczą wartość w oknie dialogowym w formie komunikatu, ale także może udostępniać użytkownikowi różne przyciski. Podstawowa składnia wywołania funkcji MsgBox obejmuje pięć argumentów (opcjonalne są umieszczone w nawiasach kwadratowych): MsgBox(prompt[, buttons] [, title] [, helpfile] [, context]) prompt – wyświetlana wiadomość buttons – to przyciski, np. vbYesNo (przyciski Tak i Nie) title – tytuł okna na pasku komunikatu (standardowo jest to Microsoft Excel) helpfile – plik pomocy context – ID tematu pomocy, wskazuje konkretny temat pomocy, który ma być wyświetlany.

144 Programowanie w Visual Basic144 Funkcja MsgBox vbAbortRetryIgnore vbYesNo vbYesNoCancelvbOKOnly

145 Programowanie w Visual Basic145 Funkcja MsgBox vbOKCancel +vbCritical vbYesNo +vbQuestion vbOKOnly +vbExclamation vbOKCancel +vbInformation

146 Programowanie w Visual Basic146 Funkcja MsgBox Wartość zwracaną przez funkcję MsgBox można przypisywać do zmiennej, a można także wywołując tę funkcję samodzielnie, bez użycia instrukcji przypisania. W poniższym przykładzie wynik funkcji zapisywany jest na zmiennej Odp. Odp = MsgBox(Kontynuować?, vbYesNo + vbQuestion, Odpowiedz) If Odp = vbNo Then Exit Sub

147 Programowanie w Visual Basic147 Funkcja MsgBox Stała vbYesNo powoduje wyświetlenie w polu komunikatu dwóch przycisków: jednego z etykietą Tak, a drugiego z etykietą Nie. Dodanie do wartości argumentu przyciski stałej vbQuestion powoduje ponadto wyświetlenie ikony ze znakiem zapytania. Po wykonaniu pierwszej instrukcji zmienna Odp zawiera jedną z dwóch wartości, reprezentowanych przez stałe vbYes i vbNo. W tym przykładzie kliknięcie przez użytkownika przycisku Nie powoduje zakończenie procedury.

148 Programowanie w Visual Basic148 Funkcja MsgBox Wartość zwracana przez funkcję MsgBox jest liczbą całkowitą: 1 - vbOK (Akceptuj). 2 – vbCancel (Anuluj). 3 – vbAbort (Przerwij). 4 – vbRetry (Ponów próbę). 5 – vbIgnore (Ignoruj). 6 – vbYes (Tak). 7 – vbNo (Nie).

149 Programowanie w Visual Basic149 Funkcja MsgBox Argument buttons jest opcjonalny. Zamiast nazw można użyć wartości liczbowych z tabel sterujących, które są odpowiednikami argumentu: vbOKOnly - 0 vbOKCancel - 1 vbAbortRetryIgnore - 2 vbYesNoCancel - 3 vbYesNo - 4 vbRetryCancel - 5 vbCritical – 16 vbQuestion – 32 vbExclamation – 48 vbInformation - 64 vbDefaultButton1 – 0 – przyciskiem domyślnym jest przycisk 1 vbDefaultButton2 – 256 – przyciskiem domyślnym jest przycisk 2 vbDefaultButton3 – 512 – przyciskiem domyślnym jest przycisk 3

150 Programowanie w Visual Basic150 Funkcja MsgBox Liczby, które są odpowiednikami poszczególnych opcji argumentu Buttons można sumować: Sub Przykład() zmienna = "Test" MsgBox zmienna, 306, "Przykłady" End Sub 306 = – vbAbortRetryIgnore 48 – vbExclamation 256 – domyślny przycisk 2

151 Programowanie w Visual Basic151 Funkcja InputBox Funkcja InputBox wyświetla zapytanie o jedną informację. Zawsze zwraca łańcuch, więc w przypadku wprowadzania wartości liczbowych konieczne jest dokonanie konwersji jej wyniku. Zapytanie może liczyć około 1024 znaków. Oprócz niego można określić tytuł okna dialogowego, wartość domyślną oraz jego położenie na ekranie. Można też dodać własny temat pomocy. W takim przypadku pole wprowadzania danych zawiera przycisk Pomoc.

152 Programowanie w Visual Basic152 Składnia funkcji InputBox InputBox (prompt[, title][, default] [, xpos][, ypos][, helpfile, context]) Znaczenie argumentów: prompt – zapytanie (wymagany) – tekst wyświetlany w polu wprowadzania danych. title – tytuł okna (opcjonalny). default – wartość domyślna (opcjonalna). xpos, ypos – współrzędne ekranowe lewego górnego rogu okna (opcjonalne). helpfile, context – plik pomocy i ID tematu pomocy (opcjonalne).

153 Programowanie w Visual Basic153 Przykład z funkcją InputBox (1) Sub PobierzImięNazwisko() Do Until Użytkownik Użytkownik = InputBox(Podaj imię i nazwisko:, _ Identyfikacja użytkownika) Loop PierwszaSpacja = InStr(Użytkownik, ) If PierwszaSpacja 0 Then Użytkownik = Left(Użytkownik, PirwszaSpacja) End If MsgBox Witaj & Użytkownik End Sub Funkcja zwraca pozycję danego ciągu znaków w innym ciągu znaków – w tym wypadku zwraca pozycję spacji

154 Programowanie w Visual Basic154 Przykład z funkcją InputBox (2) Sub ObliczSr() Dim Licz1 As Integer Dim Licz2 As Integer Dim Licz3 As Integer Licz1 = CInt (InputBox (Wpisz pierwszą liczbę:) Licz2 = CInt (InputBox (Wpisz drugą liczbę:) Licz3 = CInt (InputBox (Wpisz trzecią liczbę:) MsgBox (Średnia wynosi: & Chr(13) & Sr(Licz1, Licz2, Licz3) End Sub Function Sr(Licz1 As Integer, Licz2 As Integer, Licz3 As Integer) As Single Const ileLiczb As Integer = 3 Sr = (Licz1 + Licz2 + Licz3) / ileLiczb End Function

155 Programowanie w Visual Basic155 Konwersja typów danych Zamiana dowolnego typu zmiennej na określony przez zastosowaną funkcję typ. Najważniejsze funkcje konwersji: CBool, CByte, CInt, CLng, CSng, CDbl, CStr, CVar, CDate, CCur. Przykład: Ilosc = CInt(123) Wyplata = CCur (Godziny * StawkaGodz) Uwaga: Jeżeli wyrażenie przekazywane do funkcji wykracza poza przedział dopuszczalnych wartości dla typu danych, do którego próbowano dokonać konwersji, wystąpi błąd.

156 Programowanie w Visual Basic156 Obsługa błędów Podczas wykonywania programu mogą pojawić się błędy np. dzielenie przez zero lub brak dyskietki w stacji dyskietek. Wyrażenie On Error Go To etykieta sprawia, że w wypadku błędu nastąpi przeniesienie do bloku zaczynającego się od linii etykieta:. Wyrażenie On Error Resume Next sprawia, że w wypadku błędu przechodzimy do wykonania kolejnej linii programu. Samodzielna instrukcja Resume powoduje, że program powraca do miejsca, w którym wystąpił błąd, np. w sytuacji, gdy program próbuje coś odczytać z dysku A, a w stacji dysków brakuje dyskietki może ukazać się stosowny komunikat. Po włożeniu dyskietki naturalny jest powrót do linii, w której wystąpił błąd. Wyłączenie obsługi błędu następuje po On Error Go To 0.

157 Programowanie w Visual Basic157 Obsługa błędów Resume linia skacze do linii o numerze linia (lub etykiety) w obrębie tej samej procedury. Linia nie może być zerem. Kod błędu zwraca funkcja Err, zaś komunikat wyjaśniający, co się stało, zwraca funkcja Error(Err).

158 Programowanie w Visual Basic158 Programowanie w Visual Basic część 4 Obiekty Właściwości Metody

159 Programowanie w Visual Basic159 Hierarchia obiektów Na szczycie hierarchii obiektów znajduje się obiekt Application reprezentujący program Excel. Obiekt Application zawiera 47 innych obiektów np. Workbooks Window Obiekt Workbooks zawiera wszystkie otwarte obiekty Workbook, a te z kolei zawierają następne np.: Worksheets Charts Names

160 Programowanie w Visual Basic160 Odwołania do obiektów Pełne odwołanie do obiektu następuje poprzez podanie nazw kolejnych obiektów podrzędnych w hierarchii, oddzielonych kropkami np.: Application.Workbooks(Zeszyt1).Worksheets(Arkusz1) Obiekt Application można pominąć (jego obecność jest zakładana domyślnie. Obiekt Workbooks można pominąć jeśli skoroszyt Zeszyt1 jest aktualnie aktywny. Ostateczne odwołanie do Arkusza1 w skoroszycie aktywnym Zeszyt1 może wyglądać tak: Worksheets(Arkusz1)

161 Programowanie w Visual Basic161 Właściwości obiektu Range Każdy obiekt posiada właściwości określające jego stan: Obiekt Range posiada właściwość Value (wartość) Application.Workbooks(1).Worksheets(1).Range(A1).Value Range(A1).Value = 14 właściwość Font (czcionka) Range(A1).Font.Bold właściwość Interior (wnętrze) Range(A1).Interior.ColorIndex = 15 właściwość Borders (obramowanie) Range(A1).Borders.ColorIndex = 2 Wartości można odczytywać lub zapisywać (zmieniać): Zmienna = Worksheets(1).Range(A1).Value – odczyt Worksheets(1).Range(A1).Value = Zmienna – zapis

162 Programowanie w Visual Basic162 Właściwości obiektu Application Właściwości obiekt Application ułatwiają pracę z komórkami i zakresami: ActiveCell – aktywna komórka ActiveCell.Value = 14 ActiveSheet – aktywny arkusz ActiveSheet.Name = Mój arkusz ActiveWindow – aktywne okno ActiveWorkbook – aktywny skoroszyt ActiveWorkbook.Name = Dane personalne Selection – zaznaczony obiekt Selection.Value = 12 ThisWorkbook – skoroszyt zawierający wykonywaną procedurę Uwaga, w tym wypadku próba przypisania wygeneruje błąd, gdy zaznaczony będzie obiekt inny niż zakres (np. wykres)

163 Programowanie w Visual Basic163 Właściwości obiektu Worksheet Właściwość Range : Wstawianie wartości do komórki A1 w arkuszu Arkusz1 : Worksheets(Arkusz1).Range(A1).Value = 14 Wstawianie wartości do komórki o nazwie Blok : Range(Blok).Value = 2 Wstawianie wartości do komórek od A1 do B100 : Range(A1:B100).Value = 123 Range(A1, B100).Value = 123 Wstawianie wartości do komórek od A1, A10, A15 : Range(A1, A10, A15).Value = 123

164 Programowanie w Visual Basic164 Właściwości obiektu Worksheet Właściwość Cells : Cells(x, y) x to numer wiersza (1 – 65536) y to numer kolumny (1 – 256) Wstawianie wartości do komórki A3 w arkuszu Arkusz1 : Worksheets(Arkusz1).Cells(3, 1).Value = 14 Worksheets(Arkusz1).Cells(513).Value = 14 Wykasowanie zawartości wszystkich komórek: Worksheets(Arkusz1).Cells.ClearContents

165 Programowanie w Visual Basic165 Właściwości obiektu Worksheet Właściwość Offset : Offset(x, y) x to przesunięcie o x wierszy y to przesunięcie o y kolumn Wstawianie wartości do komórki bezpośrednio pod komórką A3 w arkuszu Arkusz1 : Worksheets(Arkusz1).Cells(3, 1).Offset(1,0).Value = 14 Wstawianie wartości do komórki bezpośrednio nad komórką A3 w arkuszu Arkusz1 : Worksheets(Arkusz1).Cells(3, 1).Offset(-1,0).Value = 14

166 Programowanie w Visual Basic166 Metody obiektu Obiekty posiadają także metody czyli działania, które można wykonać z udziałem obiektu np: Metoda Clear usuwa zawartość wybranej komórki: Worksheets(1).Range(A1).Clear Range(A1).Copy Range(B1) Jeżeli metoda ma argumenty należy je podać po jej nazwie oddzielając kolejne przecinkami: Metoda Protect obiektu Workbook używa trzech argumentów – hasło, struktura i okno (odpowiadają opcjom w oknie dialogowym Chroń skoroszyt) Workbooks(Dane poufne). Protect hasło, True, True Workbooks(Dane poufne). Protect, True, True Workbooks(Dane poufne). Protect Structure:=True, Windows:=True - Nazwanie metod w celu ich rozróżnienia

167 Programowanie w Visual Basic167 Formularze – zasady ogólne Niestandardowe okna dialogowe dostępne w Excelu. Skoroszyt może zawierać dowolną liczbę formularzy użytkownika.

168 Programowanie w Visual Basic168 Formularze

169 Programowanie w Visual Basic169 Formularze

170 Programowanie w Visual Basic170 Dodawanie formantów Wszystkie dostępne formanty znajdują się w oknie Toolbox. VBA nadaje formantom nazwę domyślną składającą się z typu formantu i liczby będącej numerem kolejnym formantu danego typu w oknie. Np. CommandButton1 CommandButton2 Do zmiany nazwy formantu służy właściwość Name.

171 Programowanie w Visual Basic171 Przegląd formantów Label – etykieta Służy do wyświetlania tekstu statycznego w formularzu, opisu pól tekstowych itp. Najczęściej używane właściwości formantu, to Name i Caption. TextBox - Pole tekstowe Służy do wprowadzania tekstu przez użytkownika. Najczęściej używane właściwości formantu, to Name i Text.

172 Programowanie w Visual Basic172 Przegląd formantów ComboBox – pole kombi Ma postać listy rozwijanej i w polu wyświetla zawsze tylko jedną pozycję. Użytkownik może wprowadzać do tego pola wartość nie występującą na liście. Najważniejsze właściwości formantu to: RawSource – podanie zakresu komórek będących źródłem listy ListRows – podanie liczby pozycji na liście.

173 Programowanie w Visual Basic173 Przegląd formantów ListBox – pole listy Stanowi listę elementów, z których użytkownik może wybrać jeden lub nawet kilka. Formanty tego typu są bardzo elastyczne. Elementy pola listy mogą być zapisane w zakresie arkusza, składającego się nawet z wielu kolumn (adres zakresu przypisany jest do właściwości RawSource ), jak i zdefiniowane za pomocą kodu VBA przy użyciu metody AddItem. Można też przypisać właściwości List tablicę wartości ListBox.List() = array (…)

174 Programowanie w Visual Basic174 Przegląd formantów CheckBox - Pole wyboru Formant używany do zaznaczenia danej opcji. Gdy pole wyboru jest zaznaczone, ma wartość True (prawda). W przeciwnym przypadku ma wartość False (fałsz). OptionButton – Przycisk opcji Jest użyteczny, gdy użytkownik ma wybrać jedną z kilku opcji, elementów. Zawsze znajduje się w grupie tego typu przycisków. Jeśli okno dialogowe zawiera wiele grup przycisków, każda z nich musi mieś inną wartość właściwości GroupName. Można też umieszczać przyciski opcji w formancie Pole grupy, który automatycznie tworzy z nich oddzielny zestaw. Gdy przycisk opcji jest zaznaczony, ma wartość True (prawda).

175 Programowanie w Visual Basic175 Przegląd formantów Frame - Pole grupy Służy do grupowania innych formantów. Grupowanie może mieć na celu poprawę czytelności formularza lub konieczność logicznego związania kilku formantów, np. przyciski opcji umieszczone w jednym polu grupy wzajemnie się wykluczają. Image – Obraz Używany do wyświetlania grafiki pobranej z pliku lub ze schowka. Obrazy połączone z tym oknem przechowywane są w skoroszycie.

176 Programowanie w Visual Basic176 Przegląd formantów MultiPage – Wiele stron Pozwala tworzyć okna dialogowe zawierające karty. Standardowo dostępne są dwie karty, ale można zwiększyć ich liczbę klikając nazwę karty prawym przyciskiem myszy i wybierając z menu podręcznego polecenie New Page. ScrollBar – Pasek przewijania Pozwala zmieniać wartość formantu skokowo. SpinButton – Pokrętło Służy do zmiany wartości. Formant używany jest wraz z formantem Pole tekstowe i Etykieta, które pokazują jego aktualną wartość.

177 Programowanie w Visual Basic177 Formant RefEdit Formant umożliwia wybieranie zakresu komórek. Po kliknięciu małego przycisku na prawym końcu tego formantu z ekranu znika dotychczasowe okno dialogowe, a zamiast niego pojawia się mały selektor zakresu. Formant zwraca łańcuch reprezentujący adres zakresu. Można zamienić ten łańcuch w obiekt Range za pomocą instrukcji typu: Set ZakresUżytk = Range(RefEdit.Text)

178 Programowanie w Visual Basic178 Formant RefEdit Dobrą zasadą jest inicjalizowanie formantu RefEdit, tak aby wyświetlał aktualnie zaznaczony zakres. Można to zrobić w procedurze: UserForm_Inicjalize RefEdit.Text = _ActiveWindow.RangeSelection.Address Sposoby wskazania adresu w formancie RefEdit : Zaznaczenie w arkuszu Wpisanie ręczne do formantu Modyfikacja istniejącego tekstu w formancie. Wskazany zakres może znajdować się w dowolnym arkuszu

179 Programowanie w Visual Basic179 Przegląd formantów CommandButton – przycisk polecenia Po naciśnięciu przycisku wykonywane są określone przez użytkownika instrukcje, np.. zaakceptowanie zmian wprowadzonych w formularzu.

180 Programowanie w Visual Basic180 Programowanie formantów

181 Programowanie w Visual Basic181

182 Programowanie w Visual Basic182

183 Programowanie w Visual Basic183 Metoda GetOpenFilename Metoda obiektu Application. Gwarantuje uzyskanie poprawnej nazwy pliku i ścieżki dostępu. Wyświetla standardowe okno dialogowe Otwórz. Nie otwiera pliku, tylko zwraca łańcuch zawierający ścieżkę i nazwę pliku zgodnie ze wskazaniem użytkownika.

184 Programowanie w Visual Basic184 Metoda GetOpenFilename Składnia metody (wszystkie argumenty są opcjonalne): obiekt.GetOpenFilename (FileFilter, FilterIndex, Title, ButtonText, Multiselect) FileFilter – decyduje o pozycjach dostępnych w oknie dialogowym w polu listy Pliki typu. Argument ma postać par składających się z łańcucha opisującego filtr oraz definiujących go symboli wieloznacznych. Poszczególne pary muszą być oddzielone przecinkami. Wartość domyślna tego argumentu to: Wszystkie pliki (*.*),*.*

185 Programowanie w Visual Basic185 Metoda GetOpenFilename Inne wartości np.: Pliki tekstowe (*.txt),*.txt, Pliki ASCII (*.asc),*.asc, FilterIndex – wskazuje domyślny filtr plików. Title – zawiera tekst wyświetlany na pasku tytułu okna dialogowego. ButtonText – nie jest używany w Excelu. MultiSelect – wielokrotne zaznaczenie – ma wartość True; użytkownik może zaznaczyć w oknie dialogowym wiele plików jednocześnie, ich nazwy zostaną wówczas zwrócone w tablicy.

186 Programowanie w Visual Basic186 Metoda Dialogs Wyświetlenie wbudowanego okna dialogowego Excela do samodzielnego dokonania wyboru zakresu komórek. Metoda Dialogs należy do obiektu Application. Wynik = Application.Dialogs(xlDialogFormulaGoTo).Show xlDialogFormulaGoTo jest predefiniowaną stałą. Zmienna wynik nie zawiera zakresu komórek wybranego przez użytkownika. Po kliknięciu przycisku OK. wartością tej zmiennej jest True, a po kliknięciu Anuluj – False.

187 Programowanie w Visual Basic187 Wyświetlanie winiety Kod w module obiektu ThisWorkbook: Private Sub Workbook_Open() UserForm1.Show End Sub Kod w module formularza UserForm1: Private Sub UserForm1_Activate() Application.OnTime Now + TimeValue(00:00:05), _ UsuńFormularz Kod w ogólnym module VBA: Private Sub UsuńFormularz() Unload UserForm1 End Sub

188 Programowanie w Visual Basic188 Errory Expected: An expected part of the syntax was not found. The error is usually located to the left of the selected item, but isn't always obvious. For example, you can invoke a Sub procedure with or without the Call keyword. However, if you use the Call keyword, you must enclose the argument list in parentheses. This error has the following causes and solutions: Expected: End of Statement. Improper use of parentheses in a procedure invocation: X = Workbook.Add F:= 5 ' Error due to no parentheses. Call MySub 5 ' Error due to no parentheses. Use parentheses in a function call that specifies arguments or with a Sub procedure invocation that uses the Call keyword.procedureargument Expected: ). Incorrect syntax for a procedure call. For example, a function call can't stand by itself, and Sub procedure calls sometimes require the Call keyword, depending on how you specify their arguments. Workbook.Add (X:=5, Y:=7) ' Function call without expression. YourSub(5, 7) ' Sub invocation without Call. Always use function calls in expressions. If you have multiple arguments enclosed in parentheses in a Sub procedure call, you must use the Call keyword.expressions Expected: Expression. For example, when pasting code from the Object Browser, you may have forgotten to specify a value for a named argument. Workbook.Add (X:= ) ' Error because no value assigned to ' named argument. Either add a value for the argument, or delete the argument if it's optional.Object Browsernamed argument Expected: Variable. For example, you may have used restricted keywords for variable names. In the following example, the Input # statement expects a variable as the second argument. Since Type is a restricted keyword, it can't be used as a variable name. Input # 1, Type ' Type keyword invalidly used as ' variable name. Rename the variable so it doesn't conflict with restricted keywords.keywords For additional information, select the item in question and press F1 (in Windows) or HELP (on the Macintosh).

189 Programowanie w Visual Basic189 Opis błedó

190 Programowanie w Visual Basic190 Dziękuję za uwagę Test – , godzina 9.15


Pobierz ppt "Programowanie w Visual Basic1 Opracowanie: Joanna Sekulska-Nalewajko Łukasz Sturgulewski Literatura: John Walkenbach Programowanie Excel 2000 Visual Basic,"

Podobne prezentacje


Reklamy Google