Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Visual Basic for Applications Joanna Porter-Sobieraj

Podobne prezentacje


Prezentacja na temat: "Visual Basic for Applications Joanna Porter-Sobieraj"— Zapis prezentacji:

1 Visual Basic for Applications Joanna Porter-Sobieraj porter@mini.pw.edu.pl www.mini.pw.edu.pl/~porter/vba

2 Plan wykładu Pojęcia wstępne Makra Edytor Visual Basic Podstawy języka

3 Plan wykładu Typy danych, zmienne, stałe Procedury i funkcje Funkcje wbudowane Sterowanie  Instrukcje warunkowe  Pętle

4 Plan wykładu Tablice Obiekty Obiekty Visual Basic'a Formularze

5 Pojęcia wstępne Programowanie Zapisanie w pewnym dokładnie określonym języku poleceń dla komputera, systemu operacyjnego lub programu Wygoda? Konieczność? Sztuka? Rzemiosło?

6 Pojęcia wstępne Programiści - ludzie, którzy programują Kategorie  Projektanci  Programiści  Testerzy Znajomość i umiejętność tworzenia algorytmów to podstawowa umiejętność programisty

7 Pojęcia wstępne W codziennym życiu napotykamy algorytmy  przepisy kulinarne  instrukcja księgowania kosztów  instrukcje obsługi np. RTV Nie są to algorytmy komputerowe

8 Pojęcia wstępne Algorytm  formalnie zapisany sposób rozwiązania danego problemu składający się z kolejnych kroków wykonywanych w określonej kolejności  każdy algorytm ma tylko jeden punkt startowy, czyli wyróżniony pierwszy krok działania  punktów końcowych może być wiele

9 Pojęcia wstępne Najważniejszy jest pomysł Sposoby opisu algorytmu  schemat blokowy  język naturalny  język programowania

10 Pojęcia wstępne Najlepszym sposobem nauki pisania algorytmów jest analiza i rozumienie istniejących algorytmów w połączeniu z własnymi próbami rozwiązywania prostych problemów samemu Należy dążyć do algorytmicznego sposobu myślenia o zagadnieniach

11 Pojęcia wstępne Algorytm Euklidesa Dla dwóch danych liczb naturalnych m i n wyznaczyć największą liczbę naturalną która jest dzielnikiem zarówno m i n Przykład Największym wspólnym dzielnikiem 119 i 544 jest 17

12 Pojęcia wstępne Język naturalny E1. [wyznaczanie reszty] Podziel liczbę m przez n, resztę z dzielenia oznaczamy jako r (m=a*n + r 0 ≤ r < n) E2. [Reszta zero?] Jeżeli r = 0 algorytm kończy się, wynikiem jest liczba n E3. [Redukcja] Zmień m ← n, n ← r i przejdź do kroku E1 Numer kroku* *Tu się przyda Krótki opis kroku

13 Pojęcia wstępne Język naturalny  Zrozumiały dla człowieka, dobrze opisuje idee algorytmu, skupia się tylko na rzeczach ważnych pomija detale  Nie jest rozumiany przez komputer

14 Pojęcia wstępne Symulacja Lp.Krokmnr 1E1562114 2E2562114 3E32114? 4E121147 5E221147 6E3147? 7E11470 8E21470

15 Pojęcia wstępne Schemat blokowy E1.Wyznaczanie reszty E2.Czy reszta jest 0? E3.Redukcja nie tak

16 Pojęcia wstępne Schemat blokowy  Pokazuje przepływ sterowania, sekwencje  Dobrze uzupełnia opis w języku naturalnym  Trudno wpisać wszystkie istotne informacje w boksy  Nie istnieją dostatecznie dobre programy zamieniające schemat blokowy na program

17 Pojęcia wstępne Język programowania  Wyspecjalizowany i ograniczony język rozumiany przez komputer na pewnym poziomie  Grupy w zależności od przeznaczenia języki niskiego poziomu - sterowanie sprzętem lub systemem operacyjnym, np. asembler języki wysokiego poziomu - tworzenie samodzielnych programów, np. BASIC, Pascal, C, C++, Visual Basic języki poziomu aplikacji - manipulowanie aplikacjami, np. Visual Basic for Applications

18 Pojęcia wstępne Język programowania  Jest zrozumiały dla komputera  Jest precyzyjny  Trudniejszy do studiowania przez człowieka  Detale i elementy ważne są tak samo wyeksponowane

19 Pojęcia wstępne Ułatwieniem w konstrukcji algorytmu może być poznanie 5 jego cech 1. skończoność 2. precyzja definicji 3. wejście 4. wyjście 5. efektywność

20 Pojęcia wstępne 1.Skończoność  Oznacza, że algorytm musi zakończyć swoje działanie w skończonym czasie  Dla prostych problemów będzie to „mgnienie oka”, dla bardziej złożonych godziny lub nawet dni  Programista musi zatroszczyć się aby algorytm nie pozwalał na nieskończone "kręcenie się" w pętli  Algorytm nieskończony (przykład negatywny): A1. Ustal x ← x+1 A2. Jeżeli x > 0 zakończ w p.p. przejdź do kroku A1 A0. x← -5

21 Pojęcia wstępne 2.Precyzja Definicji  Każdy krok algorytmu musi być opisany precyzyjnie, dokładnie  Algorytm nie zna niedomówień lub założeń „zwyczajowych”  Zapis w postaci kodu C lub C++ utrudnia nieprecyzyjne definiowanie kroków.  Negatywny przykład: A1. Wyznacz NWD liczb x i y, wynik przechowaj jako liczbę w A2. Jeżeli w = 1 przejdź dalej Jak? Do którego kroku?

22 Pojęcia wstępne 3.Wejście  Algorytm może posiadać jedno lub więcej wejść (UWAGA: nie mylić z punktem startowym)  Przez wejście rozumiemy każdą pojedynczą informację dostarczaną algorytmowi  W przypadku algorytmu Euklidesa są dwa wejścia: liczba m i liczba n  Technicznie wejściem algorytmu może być: Informacja wskazana myszką podczas pracy z programem Dane podane z klawiatury Dane wczytane z pliku Informacje odczytane z urządzenia zewnętrznego takiego jak np. skaner kodów paskowych

23 Pojęcia wstępne 4.Wyjście  Algorytm musi posiadać jedno lub więcej wyjść (nie mylić z zakończeniem działania)  Przez wyjście rozumiemy każdą pojedynczą informację jaka jest efektem działania algorytmu  W przypadku algorytmu Euklidesa jest jedno wyjście: liczba będąca NWD  Technicznie wyjściem algorytmu może być: Informacja wyświetlana na ekranie Impulsy sterujące pracą urządzenia zewnętrznego np. drukarki  Nie ma sensu algorytm bez wyjścia!

24 Pojęcia wstępne 5.Efektywność  Algorytm powinien dany problem rozwiązywać możliwie najszybciej, czyli w jak najmniejszej ilości kroków  Algorytm powinien dany problem rozwiązywać używając możliwie jak najmniej zasobów czyli pamięci, łączy sieciowych itp.  Te dwa pojęcia kolidują – czasem czas można poprawić kosztem pamięci i odwrotnie  W praktyce zajęć studenckich i wielu projektów komercyjnych osłabia się efektywność na rzecz łatwości i szybkości kodowania

25 Pojęcia wstępne AlgorytmPrzepis kulinarny Skończoność + Tak, orientacyjny czas często podawany, Musi się kiedyś ugotować Precyzja definicji + Nie, „Dodaj szczyptę soli, Gotuj aż zmięknie” Wejście + Tak, wiktuały Wyjście + Tak, potrawa Efektywność + Tak, wyrażona kosztem czyli cena wiktuałów + czas przygotowania potrawy

26 Pojęcia wstępne Algorytm Kod źródłowyKod maszynowy ProgramInterpreter Kompilator Krok I Ścieżka kompilacji Ścieżka interpretacji

27 Pojęcia wstępne Od algorytmu do programu (Krok I)  Gotowy algorytm zapisać w postaci kodu języka programowania  Istnieje wiele różnych języków programowania, każdy z nich posiada przewagę nad każdym innym, wszystko zależy od problemu  Dobrze poznając jeden język programowania, łatwo jest później opanować kolejne  UWAGA: algorytmy pozostają niezmienione, niezależnie od wybranego języka programowania

28 Pojęcia wstępne Od algorytmu do programu (Krok I)  Wybór języka programowania determinuje jaką ścieżką należy podążać potem Visual Basic (także w wersji dołączonej do pakietu MSOffice) jest językiem interpretowanym C i C++ jest językiem kompilowanym  Algorytm spisany zgodnie z kanonem danego języka programowania nazywamy kodem źródłowym  Do spisania kodu źródłowego używamy najczęściej tego samego programu komputerowego, który wykorzystujemy do kompilacji lub interpretacji

29 Pojęcia wstępne Interpretacja  Jest to proces przetłumaczenia kodu źródłowego, czyli tekstu na język zrozumiały dla komputera  Wynikiem interpretacji jest działający program, procesy korzystania z programu i jego interpretacji zachodzą równocześnie, przypomina to rozmowę z biegłym tłumaczem.  Do przeprowadzenia interpretacji kodu potrzebny jest specjalny program zwany interpreterem  Ponowne użycie programu będzie wymagało ponownej interpretacji

30 Pojęcia wstępne Kompilacja  Jest to proces zamiany kodu źródłowego, czyli tekstu na kod zrozumiały dla komputera  Wynikiem kompilacji jest plik z danymi binarnymi zwany kodem maszynowym  Do przeprowadzenia kompilacji kodu potrzebny jest specjalny program zwany kompilatorem  Aby skorzystać z tak przygotowanego programu wystarczy uruchomić plik z kodem maszynowym  Kompilacja jest konieczna tylko raz, z kodu maszynowego (czyli pliku.exe) można korzystać wielokrotnie

31 Pojęcia Wstępne Wady i zalety Interpretacja Kompilacja Szybkość działania  Przenośność  Łatwość kodowania  Odporność na błędy  Zasoby 

32 Pojęcia wstępne BASIC (Beginners All-Purpose Symbolic Instruction Code) 1963 r. Założenie: umożliwić szybkie tworzenie programów dla osób nie zajmujących się zawodowo komputerami

33 Pojęcia wstępne VB (Visual Basic) 1991 r. BASIC połączony ze środowiskiem programowania wizualnego Założenie: umożliwić łatwe tworzenie aplikacji dla środowiska Windows

34 Pojęcia wstępne VBA (Visual Basic for Applications) Visual Basic dołączony do aplikacji Microsoft Office: Access, Excel, PowerPoint, Outlook, Word Założenie: umożliwić samodzielne rozszerzanie aplikacji przez użytkowników

35 Makra Makro Lista instrukcji, które aplikacja może automatycznie wykonać Dwie metody tworzenia:  Wykonać pożądane instrukcje z włączonym trybem ich automatycznego zapisywania  Zapisać instrukcje w postaci poleceń języka VBA

36 Makra – przykłady wykorzystania Sformatowanie w jednakowy sposób wielu komórek w wielu arkuszach Excela Sformatowanie w jednakowy sposób wielu fragmentów tekstu dokumentu Worda Sformatować wiele wykresów w jednakowy sposób w arkuszu Excela

37 Makra – przykłady wykorzystania Zmodyfikować zawartość wielu komórek według zadanego schematu w wielu arkuszach Excela Zmodyfikować zawartość dokumentu Worda w sposób bardziej skomplikowany niż zwykłe zastępowanie tekstu Skopiować do nowego dokumentu Worda tylko wybrane fragmenty innych dokumentów Wczytać do arkusza Excela dane zapisane w niestandardowym formacie Zapisać dane z arkusza Excela w niestandardowym formacie

38 Makra Rejestrowanie makra Krok 1 Przemyśleć problem! Zadbać o poprawne warunki początkowe Menu: Narzędzia / Makro / Zarejestruj nowe makro

39 Makra Rejestrowanie makra Krok 2 Nazwa  Złożona z liter, cyfr i znaków podkreślenia  Pierwszy znak musi być literą Klawisz skrótu  Dozwolone jest użycie klawisza SHIFT  Trzeba pamiętać o wykorzystywanych już skrótach Przechowywanie  'Skoroszyt makr osobistych' - wspólny dla wszystkich otwieranych arkuszy  'Nowy skoroszyt'  'Ten skoroszyt'

40 Makra Rejestrowanie makra Krok 3 Wszystkie czynności wykonane przy pomocy klawiatury lub myszy zostaną zarejestrowane, aż do momentu zatrzymania rejestrowania Odwołanie względne czy bezwzględne?  Bezwzględne - odtwarzane makro będzie zawsze wykonywało czynności w tej samej komórce ($A$1)  Względne - odtwarzane makro będzie wykonywało czynności w komórce wskazanej przez przesunięcie względem początkowej komórki (A1)

41 Makra Dialog makro Menu: Narzędzia / Makro / Makra Nazwy makr powinny być znaczące! Opisy makr mogą być pomocne! 'Edycja'- możliwość edycji kodu VBA będącego zapisem zarejestrowanego makra

42 Makra Uruchamianie makra Klawiatura - klawisz skrótu wybrany przed rozpoczęciem rejestrowania Dialog 'Makro' - przycisk 'Uruchom' Menu - nowa opcja menu specjalnie dla makra Pasek narzędzi - nowy przycisk specjalnie dla makra Przycisk w arkuszu Z edytora VBA

43 Makra Dodawanie makra do menu Menu: Narzędzia / Dostosuj Dialog 'Dostosuj': Opcja 'Polecenia', kategoria 'Makra' Przenieść 'Niestandardowy element menu' w pożądane miejsce w menu aplikacji Prawy przycisk myszy na nowej pozycji menu – możliwość zmiany nazwy i przypisania makra Zamknięcie dialogu 'Dostosuj' - koniec modyfikacji menu Można tworzyć nowe menu z dowolną zawartością wybierając kategorię 'Nowe menu' z opcji 'Polecenia' na dialogu 'Dostosuj'.

44 Makra Dodawanie makra do paska narzędzi Menu: Narzędzia / Dostosuj Dialog 'Dostosuj': Opcja 'Polecenia', kategoria 'Makra' Przenieść 'Przycisk niestandardowy' w pożądane miejsce w dowolnym pasku narzędzi aplikacji Prawy przycisk myszy na nowym przycisku – możliwość zmiany nazwy i przypisania makra Zamknięcie dialogu 'Dostosuj' - koniec modyfikacji pasków narzędzi Można tworzyć nowe paski narzędzi z dowolną zawartością wybierając opcję 'Paski narzędzi' na dialogu 'Dostosuj' i naciskając przycisk 'Nowy'.

45 Makra Kod zarejestrowanego makra Przycisk 'Edycja' na dialogu 'Makro' (menu: Narzędzia / Makro / Makra) Makro  Zarejestrowane czynności użytkownika  Zapisane w postaci procedury języka VBA  Wykorzystujące obiekty udostępniane przez aplikację

46 Makra

47 Edytor Visual Basic

48 Okno eksploratora projektu Zawartość projektu: Obiekty Excela - This Workbook - skoroszyt projektu - Arkusze - Wykresy Formularze - własne okna dialogowe Moduły - moduły kodu (standardowe) Moduły klas - moduły klas wykorzystywane przy tworzeniu własnych obiektów Odwołania do innych projektów

49 Edytor Visual Basic Okno właściwości Obiekty - poszczególne arkusze, wykresy, moduły, moduły klas oraz This Workbook Zbiory właściwości różnych obiektów są różne Nie wszystkie właściwości zawsze można zmieniać Nie wszystkie właściwości są zawsze widoczne

50 Edytor Visual Basic Okno kodu Możliwości wyświetlania: Wszystkie procedury z modułu oddzielone poziomymi liniami Tylko jedna aktualnie wybrana procedura Okno podzielone na dwie niezależnie przewijane części Zawartości listy obiektów i listy procedur zależą od obiektu aktualnie wybranego do edycji

51 Edytor Visual Basic Okno kodu Edycja kodu Po przejściu do nowej linii automatycznie jest sprawdzana poprawność i dokonywane formatowanie (zamiana wielkości liter, stosowanie wcięć i kolorowanie składni) Znak podkreślenia '_' umożliwia kontynuowanie instrukcji w nowej linii, ale nie można dzielić w ten sposób ciągu znaków w cudzysłowach

52 Edytor Visual Basic Okno kodu Edycja kodu Kolory: - niebieski - słowa kluczowe - zielony - komentarze - czerwony - błąd

53 Edytor Visual Basic Okno instrukcji bezpośrednich Wykonywanie pojedynczych poleceń VBA. Wypisywanie tekstu instrukcją Debug.Print (lub krócej ' ? '), umożliwiające sprawdzanie wyniku wykonania instrukcji

54 Edytor Visual Basic Pomoc Domyślnie pomoc na temat Visual Basica nie jest instalowana. Można ją dodać bez potrzeby ponownego instalowania całego MS Office 'Microsoft Visual Basic - tematy Pomocy' - pomoc na temat aplikacji, z której uruchamiany jest Visual Basic. 'Spis treści i indeks' - pomoc na temat Visual Basica

55 Edytor Visual Basic Pomoc na temat Visual Basica Zawiera informacje na temat Visual Basic for Applications bez szczegółów dotyczących poszczególnych aplikacji:  Obsługa środowiska VBA  Opis języka VBA  Tworzenie formularzy (własnych okien dialogowych)  Odnośniki do pomocy na temat wykorzystania VBA w aplikacjach MS Office

56 Edytor Visual Basic Pomoc na temat Visual Basica dla Excela Zawartość  Opis VBA  Pełny opis Visual Basica dla Excela - opis wszystkich zdarzeń, funkcji, metod, obiektów i własności  Informacje o dostępie do baz danych  Opis tworzenia formularzy

57 Edytor Visual Basic Korzystanie z pomocy Sposoby znajdowania szukanych informacji:  Zawartość – przeglądanie rozdziałów i podrozdziałów pomocy  Indeks - znajdowanie słów kluczowych  Wyszukiwanie - znajdowanie wystąpień wskazanego tekstu we wszystkich tekstach zawartych w pomocy  Informacje o słowie występującym w kodzie – klawisz F1 UWAGA: Szukając informacji trzeba pamiętać, żeby szukać w dobrym zbiorze pomocy.

58 Podstawy języka Moduł  Miejsce przechowywania instrukcji VB  Złożony z deklaracji procedur Procedura  Zbiór instrukcji wykonywanych w całości  Złożona z instrukcji  Ograniczona frazami: Sub i End Sub Funkcja  Procedura zwracająca wartość  Ograniczona frazami: Function i End Function Instrukcja  Pojedyncza linia procedury lub funkcji

59 Podstawy języka

60 Procedury Zalety stosowania procedur:  Większa czytelność kodu  Prostsze dokonywanie zmian  Prostsze testowanie kodu  Możliwość wielokrotnego użycia kodu

61 Podstawy języka Procedury Kolejność szukania procedury w momencie jej wołania:  Moduł, w którym znajduje się procedura wywołująca  Pozostałe moduły znajdujące się w aktualnym skoroszycie  W przypadku wywoływania procedury z innego skoroszytu należy dodać odwołanie do tego skoroszytu (menu: Narzędzia / Odwołania)

62 Podstawy języka Obiekt  Przedmiot kontrolowany przez Visual Basic  np. Workbook, Worksheet, Range, Application, Window Kolekcja  Zbiór podobnych obiektów  np. Workbooks, Worksheets Właściwość  Cecha obiektu  np. Column, Font, Formula, Name, Row, Style, Value dla obiektu Range Metoda obiektu  Czynność, którą dany obiekt potrafi wykonać  np. ClearContents, ClearFormats, Clear dla obiektu Range Właściwość obiektu może być obiektem.

63 Podstawy języka Hierarchia obiektów Excela

64 Podstawy języka Hierarchia obiektów Worksheets

65 Podstawy języka Składnia Odwołanie do właściwości obiektu: obiekt.właściwość Range("A1").Value ActiveSheet.Range("A1").Value Zmiana właściwości obiektu: obiekt.właściwość = wartość Range("A1").Value = 25 ActiveSheet.Range("A1").Value = "nowy tekst"

66 Podstawy języka Składnia Wywołanie metody bezargumentowej: obiekt.metoda Range("A1").Clear ActiveSheet.Range("A1").ClearFormats Wywołanie metody z argumentami: obiekt.metoda(arg1, arg2,..., argN ) ActiveCell.Offset(3,2) ActiveCell.Offset(rowOffset:=3,columnOffset:=2)

67 Podstawy języka Błędy w kodzie Syntaktyczne  Wynikające z zastosowania nieprawidłowej składni instrukcji  Większość jest automatycznie wychwytywana przez edytor po zakończeniu edycji linii  Część jest wychwytywana przy próbie uruchomienia

68 Podstawy języka Błędy w kodzie Błędy wykonania  Pokazywane podczas działania wywołanych procedur Błędy logiczne  Rozbieżności działania procedur z oczekiwaniami  Nieprawidłowe wyniki

69 Podstawy języka Narzędzia ułatwiające pisanie kodu Przyspieszają wpisywanie instrukcji Szczególnie przydatne do obsługi obiektów Excela Dostępne na pasku narzędzi Edycja

70 Podstawy języka Polecenie: Wyświetl właściwości/metody Lista wszystkich właściwości i metod obiektu Sposoby pokazania:  napisać nazwę obiektu i kropkę  przycisk na pasku narzędzi  Ctrl+J Obsługa listy właściwości i metod obiektu:  tabulator - wstawia wybrany element, aktualna linia nie zmienia się  enter - wstawia wybrany element, edycja przechodzi do następnej linii  ESC - zamknięcie listy bez wstawienia

71 Podstawy języka Polecenie: Wyświetl stałe Lista stałych akceptowalnych jako wartości własności obiektów Sposoby pokazania:  napisać nazwę obiektu, kropkę, nazwę właściwości, znak równości  przycisk na pasku narzędzi  Shift+Ctrl+J Obsługa jak w przypadku listy właściwości i metod obiektu

72 Podstawy języka Polecenie: Informacje o parametrze Informacje o parametrach akceptowanych przez metodę obiektu Sposoby pokazania:  napisać nazwę obiektu, kropkę, nazwę metody, nawias otwierający  przycisk na pasku narzędzi  Shift+Ctrl+I

73 Podstawy języka Polecenie: Dokończ wyraz Automatyczne dokończenie rozpoczętego wyrazu, jeśli zawarty jest on w zbiorze znanych wyrazów Jeśli istnieje więcej niż jedna możliwość dokończenia, umożliwiany jest wybór z listy Sposób wywołania polecenia:  przycisk na pasku narzędzi  Shift+Spacja

74 Podstawy języka Przeglądarka obiektów Menu: Widok / Przeglądarka obiektów Klawisz F2

75 Podstawy języka Wykorzystanie okna instrukcji bezpośrednich Doskonałe narzędzie testowania pojedynczych instrukcji, szczególnie przydatne przy jednoczesnym podglądzie arkusza Cells(2).Select Selection.Offset(2,3).Select Range("A1").Resize(10,5).Select ?Selection.Rows.Count 10 Worksheets("Arkusz2").Select ActiveCell.Formula = "tekst" Selection.Value = 12 Cells(3,2) = 30

76 Podstawy języka Wykorzystanie okna instrukcji bezpośrednich Doskonałe narzędzie testowania pojedynczych instrukcji, szczególnie przydatne przy jednoczesnym podglądzie arkusza Range("B4").Formula = "=B3*3" ?Range("B4").Formula =B3*3 ?Range("B4").FormulaR1C1 =R[-1]C*3 Range("B4").NumberFormat = "#.##0.00 $" Workbooks.Add Workbooks("Zeszyt2").Close ?ActiveWindow.Caption Zeszyt1 ActiveWindow.Height = 100

77 Wykład 2 Zadanie 1: Nagraj makro, wstaw je do menu i na pasek. Makro ma zmieniać tło, obramowanie, grubość tekstu i tekst TYLKO w aktywnej komórce Zadanie 2: Wywołaj to makro trzykrotnie dla elementów na diagonali (odwołania względne) poprzez menu->Uruchom makro, z paska i dodanego menu (2 ostatnie nie działają) Zamiana Run -> Call Zadanie 3: Rekurencja, F8

78 Typy danych Liczby całkowite: Byte - 1 bajt; wartości od 0 do 255 Integer - 2 bajty; od -32768 do 32767 Long - 4 bajty; od ok. -20 mld do ok. 20 mld Decimal - 14 bajtów; do 28 cyfr z przecinkiem Liczby rzeczywiste: Single - 4 bajty; od ok. -3.4e38 do ok. 1.4e45 Double - 8 bajtów; rzędu +/-1.8e308 Currency - 8 bajtów; +/-9.2e14 (+4 miejsca po przecinku)

79 Typy danych Wartości logiczne: Boolean - True/False Daty: Date - od 1/1/100 do 31/12/9999 Ciągi znaków: String (ustalonej długości) - od 0 do 65535 znaków String (zmiennej długości) - od 0 do ok. 2 mld znaków

80 Typy danych Obiekty: Object - wskazanie na dowolny obiekt Typ dopasowany do wartości: Variant Definiowany przez użytkownika: Type

81 Zmienne Zmienna: miejsce w pamięci, które może przechowywać wartość określonego typu. Ta wartość może się zmieniać w trakcie działania programu. Nazwa zmiennej:  unikatowa w obrębie swojego zakresu  do 255 znaków  nie może zawierać znaku deklarującego typ, spacji, przecinka i kropki  musi zaczynać się od litery  małe i duże litery nie są rozróżniane  nie można używać słów kluczowych VB

82 Zmienne Przykłady:  wynik  wynik_dod  wynik_dodawania  wynikDod  wynikDodawania

83 Deklaracje Deklaracja zmiennej Informacja o nazwie zmiennej i jej typie Domyślnym typem jest Variant Nieobowiązkowa, ale zalecana:  przyspieszenie wykonania  oszczędność pamięci  unikanie błędów

84 Deklaracje Składnia deklaracji: Dim zmienna As typ np.: Dim wynik As Integer Skrócona deklaracja przy użyciu specjalnych znaków typów danych: % Integer & Long ! Single # Double @ Currency $ String np.: Dim wynik%

85 Deklaracje Jawne deklarowanie zmiennych Wymuszenie deklarowania zmiennych w module: Option Explicit w pierwszej linii kodu modułu

86 Ciągi znaków Znaki zwykłe i sterujące ujęte w cudzysłowach Pusty ciąg: "" Zmienne łańcuchowe stałej długości np. Dim sNazwisko As String * 30 Zmienne łańcuchowe zmiennej długości np. Dim sCiag As String

87 Ciągi znaków Łączenie ciągów znaków operatorem & np. sCiag = "tekst" & "2" Specjalne znaki sterujące, m.in.: vbNewLine - znak nowego wiersza vbTab - tabulator vbBack - backspace np. "tekst linii pierwszej" & vbNewLine & _ "tekst linii drugiej"

88 Daty Wartość daty i czasu Dostępny zakres: od 1.01.100 do 31.12.9999 Reprezentacja dat:  użycie znaków #  ciągi znaków zawierające poprawne daty

89 Daty Przykłady: Dim d As Date d = #12/24/1998 13:33:00# d = #12/24/1998# d = #13:33:00# d = ”24 grudnia 1998” Uwaga: format zależny od formatu obowiązującego w systemie operacyjnym

90 Obiekty Excel zawiera dużą liczbę dodatkowych typów danych, należących do ogólnej kategorii danych typu Object Najczęściej wykorzystywane: Chart, Comment, FillFormat, Filter, Font, Outline, PageSetup, Range, Sheets, Window, Workbook, Worksheet, WorksheetFunction Tworzenie zmiennej obiektowej:  Zadeklarować zmienną i określić jej typ (może być ogólny Object lub szczegółowy typ obiektów Excela)  Przypisać zmienną do obiektu przy pomocy instrukcji Set

91 Obiekty Przykład:

92 Tablice Tablica Kolekcja zmiennych posiadających tę samą nazwę, rozróżnianych na podstawie indeksu, czyli numeru w kolekcji. Deklaracja jednowymiarowej tablicy Dim wektor(1 To 10) As Double Deklaracja wielowymiarowej tablicy: Dim macierz(1 To 10, 1 To 10) As Double

93 Tablice

94 Tablice dynamiczne Deklaracja: Dim tabDyn() As Integer Określenie rozmiaru: ReDim tabDyn(1 To 10) Zmiana rozmiaru:  z wyczyszczeniem: ReDim tabDyn(1 To 100)  z zachowaniem: ReDim Preserve tabDyn(1 To 100) Sprawdzenie rozmiaru: UBound(tabDyn)

95 Tablice dynamiczne

96 Stałe Stała Nazwa o określonym znaczeniu zastępujące wartości niezmienne w kodzie programu Przykłady deklaracji stałych: Const Tytul = "Wczytywanie danych" As _ String Const As Integer Pot_2_5 = 32 Const Poczatek As Date = #1/1/99#

97 Stałe Nie można deklarować stałych obiektów Pewne stałe są zadeklarowane w Visual Basicu lub w Excelu, np.: vbNewLine, vbTab, xlLeft, xlSolid (spis dostępny w Przeglądarce obiektów)

98 Zasięg zmiennych i stałych Zasięg Określa dostępność zmiennych i stałych dla innych procedur i modułów Trzy poziomy zasięgu:  Poziom procedury (zmienne, stałe lokalne)  Prywatny poziom modułu (prywatne)  Publiczny poziom modułu (publiczne)

99 Zasięg zmiennych i stałych Poziom procedury (zmienne, stałe lokalne)  deklaracja wewnątrz procedury  niewidoczne poza macierzystą procedurą Prywatny poziom modułu (prywatne)  deklaracja w sekcji deklaracji modułu z użyciem słowa kluczowego Private  dostępna dla wszystkich procedur zawartych w module Publiczny poziom modułu (publiczne)  deklaracja w sekcji deklaracji modułu z użyciem słowa kluczowego Public  dostępna dla wszystkich procedur w projekcie

100 Zasięg zmiennych i stałych

101 Czas życia zmiennych Czas życia Określenie jak długo (lub kiedy) zmienna jest poprawna. Dotyczy wyłącznie zmiennych lokalnych. Zmienna lokalna jest niszczona automatycznie po wyjściu sterowania poza jej zasięg (wyjściu z procedury) Zmienne lokalne zadeklarowane jako Static nie są niszczone

102 Czas życia zmiennych

103 Procedury i funkcje Niepodzielne bloki instrukcji wykonujące określone czynności Procedury Nie zwracają żadnej wartości Funkcje Zwracają wartość

104 Procedury Nie zwracają żadnej wartości Deklaracja [Public lub Private] _ Sub nazwaProcedury(arg1 As typArg1, _ arg2 As typArg2,...) Koniec: End Sub

105 Funkcje Zwracają wartość Deklaracja [Public lub Private] _ Function nazwaFunkcji(arg1 As typArg1, _ arg2 As typArg2,...) As typZwracany Koniec: End Function

106 Uruchamianie W Excelu: Procedury - dostępne w oknie dialogowym 'Makro', skąd można je uruchomić Funkcje - dostępne po wybraniu kategorii 'Wszystkie' lub 'Użytkownika' w oknie dialogowym 'Wklej funkcję'

107 Uruchamianie W edytorze Visual Basic: Uruchamianie  menu Uruchom / Uruchom makro (kursor musi być w obrębie procedury lub funkcji, którą chcemy uruchomić)  wpisać nazwę uruchamianej funkcji lub procedury w oknie Instrukcji bezpośrednich i nacisnąć Enter Przerywanie - menu Uruchom / Przerwij Resetowanie - menu Uruchom / Zresetuj

108 Wywoływanie Procedura Call nazwaProcedury(parametry,...) nazwaProcedury parametry Funkcja nazwaFunkcji(parametry,...)

109 Wywoływanie

110 Zwracanie wartości przez funkcje Domyślnym typem zwracanej wartości jest Variant Aby zwrócić wartość z funkcji przypisuje się tę wartość nazwie funkcji Można wielokrotnie przypisywać wartość nazwie funkcji

111 Zwracanie wartości przez funkcje

112 Zadanie 1: Funkcja obliczająca sumę (nie nazywać „suma”) Zadanie 2: Funkcja obliczająca sumę szeregu arytmetycznego od 1 do podanej liczby Zadanie 3: Funkcja łącząca login z nazwą serwera Zadanie 4: Funkcja TestZnaku z if’ami

113 Argumenty Domyślny typ argumentu: Variant Przekazywane przez referencję: ByRef Przekazywane przez wartość: ByVal

114

115 Wykład 3 Zadanie 1: Procedura pobierająca 2 liczby i zwracająca je w kolejności mniejsza/większa Zadanie 2: Pobierająca 2 teksty i zwracająca je w kolejności alfabetycznej (Należy użyć zmiennych przekazywanych przez zmienną)

116 Argumenty opcjonalne Argumenty, których wartości nie muszą być przekazywane do procedury lub funkcji przy jej wywołaniu. Deklaracja argumentu jako opcjonalnego: Optional Sprawdzenie, czy opcjonalny argument został przekazany do procedury lub funkcji: IsMissing(nazwa_arg) Argumenty opcjonalne muszą być umieszczone na końcu listy argumentów

117 Argumenty opcjonalne

118 Argumenty nazwane Wywoływanie procedur i funkcji z podaniem nazw argumentów i ich wartości. Zalety  Większa czytelność i przejrzystość kodu  Nie ma znaczenia kolejność argumentów

119 Argumenty nazwane Przykład: funkcja, w której wszystkie argumenty są opcjonalne i jej wywołania: SaveAs(Filename, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AddToMru, TextCodePage, TextVisualLayout) ActiveSheet.SaveAs "C:\01.xls",,,,, _ True,,, True ActiveSheet.SaveAs FileName:="C:\01.xls", _ CreateBackup:=True, _ AddToMru:=True

120 Wyjście z procedury lub funkcji Automatyczne na końcu kodu procedry lub funkcji Przed końcem kodu, używając instrukcji: Exit Sub Exit Function

121 Procedury i funkcje prywatne Prywatne Mogą być wywoływane tylko z wnętrza modułu, w którym zostały zdefiniowane Oznaczane słowem Private Np. Private Function TekstDoSpacji(tekst _ As String) As String

122 Procedury i funkcje publiczne Publiczne Mogą być wywoływane z dowolnego modułu w projekcie Oznaczane słowem Public Np. Public Sub Komunikat(tekst As String) Domyślnie wszystkie są publiczne

123 Procedury i funkcje publiczne Aby kod w jednym projekcie mógł wywoływać procedurę lub funkcję publiczną z innego projektu, projekt wywołujący musi posiadać odwołanie do projektu wywoływanego (menu Narzędzia / Odwołania) Składnia wywołania: NazwaModułu.NazwaProcedury Przykład: FunkcjeTekstowe.TekstDoSpacji("siedem osiem")

124 MsgBox MsgBox(prompt[, buttons] [, title] [,helpfile, context])

125 MsgBox MsgBox(prompt[, buttons] [, title] [,helpfile, context]) Przyciski: vbOKOnly, vbOKCancel, vbAbortRetryIgnore, vbYesNoCancel, vbYesNo, vbRetryCancel Ikony: vbCritical, vbQuestion, vbExclamation, vbInformation Zwracane wartości: vbOK, vbCancel, vbAbort, vbRetry, vbIgnore, vbYes, vbNo

126 InputBox InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])  default – wartość domyślna w oknie edycji  xpos, ypos – (15 twips = 1 piksel)

127 InputBox

128 Operacje na ciągach znaków Len(ciag) - długość ciągu np. Len("Tekst")  5 UCase(ciag) - zamiana na wielkie litery np. UCase("Tekst")  "TEKST" LCase(ciag) - zamiana na małe litery np. LCase("Tekst")  "tekst"

129 Operacje na ciągach znaków Left(ciag, dlugosc) - początek ciągu np. Left("Tekst",2)  "Te" Right(ciag, dlugosc) - koniec ciągu np. Right("Tekst",3)  "kst" Mid(ciag, poczatek, dlugosc) - wnętrze ciągu np. Mid("Tekst",2,3)  "eks" Instr(poczatek, ciag, podciag) - szukanie podciągu w ciągu np. Instr(1,"Tekst","e")  2

130 Operacje na ciągach znaków Str(liczba) - konwersja liczby na ciąg np. Str(12)  "12" Val(ciag) - konwersja ciągu na liczbę np. Val("12")  12 String(liczba, podciag) - powtarzanie podciągu w ciągu np. String(2, "ma")  "mama" Space(liczba) - stworzenie ciągu złożonego ze spacji np. Space(3)  " "

131 Operacje na ciągach znaków Trim(ciag) - usuwanie spacji początkowych i końcowych np. Trim(" Tekst ")  "Tekst" LTrim(ciag) - usuwanie spacji początkowych np. LTrim(" Tekst ")  "Tekst " RTrim(ciag) - usuwanie spacji końcowych np. RTrim(" Tekst ")  " Tekst"

132 Porównywanie ciągów znaków ciag1 = ciag2 True tylko gdy są identyczne, w przeciwnych przypadkach False ciag Like wzorzec  Option Compare Binary porównywanie domyślne polegające na porównywaniu numerów znaków  Option Compare Text porównywanie uzależnione od ustawień regionalnych (np. dla sortowania polskich tekstów)

133 Porównywanie ciągów znaków Znaki specjalne we wzorcu: ? - dowolny pojedynczy znak * - dowolna liczba dowolnych znaków # - dowolna cyfra [lista_znakow] - dowolny znak należący do listy [!lista_znakow] - dowolny znak nie należący do listy

134 Porównywanie ciągów znaków Przykładowe prawdziwe dopasowania: "tekst12" Like "te?st" "tekst12" Like "t*t12" "tekst12" Like "te???#?" "tekst12" Like "[a-z]ekst[12][0-9]" "tekst12" Like "[!0-9]*[0-9]"

135 Operacje na dacie i czasie Pobranie  Date, Time, Now – pobranie systemowej daty, czasu, daty i czasu  Year, Month, Day, Weekday, Hour, Minute, Second – pobranie składowych daty i czasu  Timer – pobranie liczby sekund od północy Ustawienie  Date, np. Date = #2001-10-01#  Time, np. Time = #17:43#

136 Operacje na dacie i czasie DateAdd(odstep, liczba, data) – dodanie do daty liczby odstępów DateAdd("m", 3, "2001-10-01")  #02-01-01# DateDiff(odstep, data1, data2) – pobranie liczby odstępów pomiędzy datami DateDiff("d", "2001-01-01", "2001-03-01")  59 DatePart(odstep, data) – pobranie składowej daty np. DatePart("h", "2001-10-01 17:43")  17

137 Operacje na dacie i czasie DateSerial(rok, miesiac, dzien) – określenie daty, np. DateSerial(1990-10, 8-2, 1-1)  #80-05-31# DateValue(wyrazenie) – określenie daty, np. DateValue("12 luty 1969")  #69-02-12# TimeSerial(godzina, minuta, sekunda) – określenie czasu, np. TimeSerial(12 - 6, -15, 0)  #05:45:00# TimeValue(wyrazenie) – określenie czasu, np. TimeValue("4:35:17 PM")  #16:35:17#

138 Sprawdzanie danych IsDate(wart) - czy wartość jest poprawną datą IsEmpty(zmienna) - czy zmienna nie została zainicjowana IsEmpty(komorka) - czy komórka jest pusta IsNull(zmienna) - czy zmienna ma wartość Null (nie zawiera żadnych danych) IsNumeric(wartosc) - czy wartość jest liczbą

139 Konwersje typów CBool(wyrazenie)  Boolean CByte(wyrazenie)  Byte CCur(wyrazenie)  Currency CDate(wyrazenie)  Date CDbl(wyrazenie)  Double CDec(wyrazenie)  Decimal CInt(wyrazenie)  Integer CLng(wyrazenie)  Long CSng(wyrazenie)  Single CVar(wyrazenie)  Variant CStr(wyrazenie)  String

140 Funkcja Format Format(wyrażenie [, format [, pierwszy_dzień_tygodnia [, pierwszy_tydzień_roku]]]) format dla dat: d 1-30 dd 1-30 ww 1-51 mmmm nazwa miesiąca y 1-355 yyyy 100-9666 vbSunday … vbSaturday vbFirstJan1 vbFirstFourDays vbFirstFullWeek

141 Funkcja Format Format(czas, "h:m:s")  "17:4:23" Format(czas, "hh:mm:ss AMPM")  "05:04:23 PM" Format(data, "dddd, mmm d yyyy")  "Wednesday, Jan 27 1993" Format(23)  "23" Format(5459.4, "##,##0.00")  "5,459.40" "5 459,40" Format(334.9, "###0.00")  "334.90" Format(5, "0.00%")  "500.00%" Format("Tekst", "<")  "tekst" Format("Tekst", ">")  "TEKST"

142 Instrukcje warunkowe Pozwalają uzależnić działanie programu od zadanych warunków zapisanych w postaci wyrażeń warunkowych Wyrażenia warunkowe (boolowskie) mogą przyjmować tylko dwie wartości:  Prawda ( True )  Fałsz ( False ) Wyrażenia warunkowe tworzone są przy pomocy operatorów porównania i operatorów logicznych

143 Operatory Operatory porównania  = równe, <> różne,  > większe, < mniejsze,  >= większe lub równe, <= mniejsze lub równe  Is identyczność obiektów  Like zgodność ze wzorcem Operatory logiczne  AND koniunkcja  OR alternatywa

144 If … Then Instrukcja lub instrukcje zostaną wykonane tylko wtedy, gdy warunek jest spełniony If warunek Then instrukcja  Najczęściej używane, gdy tylko jedna instrukcja ma zostać wykonana  Można podać więcej instrukcji, ale muszą być zapisane w jednej linii i oddzielone dwukropkiem

145 If … Then If warunek Then [instrukcje] End If  Jedna lub więcej instrukcji do wykonania, każda instrukcja zapisana w jednej linii  Zasada działania: Obliczany jest warunek Jeśli warunek jest spełniony, wtedy wykonywane są instrukcje

146 If … Then

147 If … Then … Else Inne instrukcje zostaną wykonane, gdy warunek jest spełniony, inne, gdy nie jest spełniony If warunek Then instrukcja1 Else instrukcja2  Wykorzystywana, gdy pojedyncze instrukcje są wykonywane w obu przypadkach  Zasada działania: Obliczany jest warunek Jeśli warunek jest spełniony, to wykonywana jest instrukcja1 Jeśli warunek nie jest spełniony, to wykonywana jest instrukcja2

148 If … Then … Else If warunek Then [instrukcje1] Else [instrukcje2] End If  Wykorzystywana, gdy więcej niż jedna instrukcja powinna zostać wykonana

149

150 If … Then … ElseIf Rozszerzenie Else o możliwość sprawdzenia jednego lub więcej dodatkowych warunków If warunek1 Then [instrukcje1] ElseIf warunek2 Then [instrukcje2] ElseIf warunek3 Then [instrukcje3]... Else [instrukcjeN] End If

151 If … Then … ElseIf Nie ma ograniczenia na liczbę klauzul ElseIf Klauzula Else jest opcjonalna Zasada działania:  Obliczany jest warunek1. Jeśli jest spełniony, wykonywane są instrukcje1 i skok do End If  W przeciwnym przypadku obliczany jest warunek2. Jeśli jest spełniony, wykonywane są instrukcje2 i skok End If ...  Jeśli żaden warunek nie jest spełniony, wykonywane są instrukcjeN

152 If … Then … ElseIf

153 Select Case Wykonanie jednego z kilku bloków instrukcji w zależności od wartości podanego wyrażenia Select Case wyrażenie Case wartość1 [instrukcje1] Case wartość2 [instrukcje2]... Case Else [instrukcjeN] End Select

154 Select Case Część Case Else jest opcjonalna Dozwolone jest umieszczanie wielu wartości oddzielanych przecinkami, np. Case 1, 2, 3 Dozwolone jest stosowanie Is z operatorami >, =,, =, np. Case Is <= 15 Dozwolone jest sprawdzanie zakresów przy pomocy To, np. Case 1 To 10

155

156 Zadanie Wyliczyć rozwiązanie układu dwóch równań liniowych metodą wyznaczników Wersja uproszczona zakłada, że rozwiązanie zawsze istnieje a 1 * x + b 1 * y = c 1 a 2 * x + b 2 * y = c 2 W = a 1 * b 2 – a 2 * b 1 W x = c 1 * b 2 – c 2 * b 1 x = W x / W W y = a 1 * c 2 – a 2 * c 1 y = W y / W

157 Zadanie Algorytm: A1. [Pobranie danych] Pobierz a1, a2, b1, b2, c1 i c2 A2. [Wyliczenie W] W ← a1* b2 – a2 * b1 A3. [Wyliczenie Wx] Wx ← c1* b2 – c2* b1 A4. [Wyliczenie Wy] Wy ← a1* c2 – a2* c1 A5. [Wyznaczenie x] Wypisz Wx / W A6. [Wyznaczenie y] Wypisz Wy / W Dobór pewnych danych (gdy W = 0) spowoduje błąd

158 Wykład 4 Zadanie 1: Napisz funkcję LiczbaDniMiesiaca zwracającą liczbę dni miesiąca o numerze podanym jako parametr Zadanie 2: Napisz funkcję DataPlus51Dni zwracającą datę o 51 dni późniejszą niż ta podana jako parametr Zadanie 3: Napisz funkcję DataPlusMiesiącITydzien zwracającą datę późniejszą o miesiąc i tydzień niż ta podana jako parametr

159 Wykład 4 Zadanie 4: Napisz funkcję Login zwracającą login z adresu e-mail Zadanie 5: Napisz funkcję Serwer zwracającą adres serwera z adresu e-mail Zadanie 6: Napisz funkcję Strona dodającą (tylko jeśli potrzeba) tekst „http://” przed adresem

160 Pętle Struktury programowe pozwalające wykonywać instrukcję lub blok instrukcji wielokrotnie. Warunek sterujący pętlą określa, kiedy wykonywanie instrukcji zostanie zakończone lub jak długo instrukcja ma być wykonywana. W przypadku złego zdefiniowania warunku sterującego, działanie programu może się nigdy nie zakończyć - instrukcje objęte pętlą będą wykonywane w nieskończoność. Nieskończone pętle można przerwać klawiszami Ctrl+Break

161 Do Do If warunek Then Exit Do [instrukcje] Loop Zakończenie wykonywania pętli nastąpi, gdy w chwili sprawdzania warunku jego wartość będzie True

162 Do

163

164 Wykład 4 Zadanie 7: Napisz funkcję MojaSilnia zwracającą silnię z liczby podanej jako parametr Zadanie 8: Napisz funkcję CiagArytmetyczny zwracającą sumę ciągu arytmetycznego od wartości pierwsza do wartości ostatnia (podanych jako parametry funkcji)

165 Do Until Do Until warunek [instrukcje] Loop Instrukcje będą wykonywane, aż do chwili, gdy warunek osiągnie wartość True Jeśli na początku pętli warunek będzie miał wartość True, instrukcje nie zostaną wykonane Warunek jest sprawdzany przed każdym wykonaniem instrukcji

166 Do Until

167

168 Do While Do While warunek [instrukcje] Loop Instrukcje będą wykonywane tak długo, jak długo warunek będzie miał wartość True (czyli aż do chwili, gdy warunek osiągnie wartość False ) Jeśli na początku pętli warunek będzie miał wartość False, instrukcje nie zostaną wykonane Warunek jest sprawdzany przed każdym wykonaniem instrukcji

169 Do While

170

171 Do Until ze sprawdzaniem warunku na końcu Do [instrukcje] Loop Until warunek Instrukcje będą wykonywane, aż do chwili, gdy warunek osiągnie wartość True Warunek jest sprawdzany po każdym wykonaniu instrukcji Bez względu na początkową wartość warunku instrukcje zostaną wykonane co najmniej raz

172 Do Until ze sprawdzaniem warunku na końcu

173

174 Do While ze sprawdzaniem warunku na końcu Do [instrukcje] Loop While warunek Instrukcje będą wykonywane tak długo, jak długo warunek będzie miał wartość True (czyli aż do chwili, gdy warunek osiągnie wartość False ) Warunek jest sprawdzany po każdym wykonaniu instrukcji Bez względu na początkową wartość warunku instrukcje zostaną wykonane co najmniej raz

175 Do While ze sprawdzaniem warunku na końcu

176

177 While While warunek [instrukcje] Wend Instrukcje będą wykonywane tak długo, jak długo warunek będzie miał wartość True (czyli aż do chwili, gdy warunek osiągnie wartość False ) Jeśli na początku pętli warunek będzie miał wartość False, instrukcje nie zostaną wykonane Warunek jest sprawdzany przed każdym wykonaniem instrukcji

178 While

179

180 Wykład 5 Zadanie 1: Napisz procedurę PierwszyWyraz wpisującą pierwszy wyraz tekstu z aktywnej komórki do komórki sąsiadującej z prawej strony Zadanie 2: Napisz procedurę LiczbaSpacji wypisującej w okienku MsgBox liczbę spacji w tekście wpisanym do aktywnej komórki Zadanie 3: Napisz procedurę WyrazyAktywnejKomorki wpisującej kolejne wyrazy do komórek na prawo od aktywnej

181 Wykład 5 Zadanie 4: Napisz procedurę OproczPodciagu pobierającą za pomocą okienka InputBox tekst od użytkownika i wpisującą do komórki sąsiadującej z prawej strony tekst z aktywnej komórki z wyciętym tekstem od użytkownika Zadanie 5: Zamień powyższą procedurę na funkcję – tekst do usunięcia ma być podawany jako parametr tej funkcji

182 Wykład 5 Zadanie 6: Napisz funkcję OstatniRoboczyDzienMiesiaca( Miesiac, Rok ) pobierającą jako parametry miesiąc i rok, a zwracającą datę reprezentującą ostatni dzień tego miesiąca Zadanie 7: Przekształć poprzednią funkcję tak, aby pobieranym parametrem była dowolna data, a zwracaną wartością – data reprezentująca ostatni dzień miesiąca zawierającego przekazaną datę

183 For For licznik = start To stop Step krok [instrukcje] Next licznik Na początku pętli zmiennej licznik nadawana jest wartość start Przed każdym wykonaniem instrukcji sprawdzane jest, czy wartość zmiennej licznik przekracza wartość stop, jeśli nie - instrukcje zostaną wykonane, jeśli tak - pętla zostaje przerwana Po każdym wykonaniu instrukcji wartość zmiennej licznik zwiększana jest o wartość krok

184 For For licznik = start To stop Step krok [instrukcje] Next licznik Fraza Step krok jest opcjonalna, domyślną wartością kroku jest 1 Krok może być ujemny Podawanie nazwy zmiennej we frazie Next jest opcjonalne W dowolnym miejscu wewnątrz pętli można ją przerwać przy pomocy instrukcji Exit For

185 For

186

187 For Each For Each element In kolekcja [instrukcje] Next element Instrukcje zostaną wykonane dla każdego elementu należącego do kolekcji Podawanie nazwy zmiennej we frazie Next jest opcjonalne W dowolnym miejscu wewnątrz pętli można ją przerwać przy pomocy instrukcji Exit For

188 For Each

189 Zagnieżdżanie pętli Umieszczanie jednej pętli w obrębie drugiej Wewnętrzna pętla zostanie wykonana w całości (czyli instrukcje w niej zawarte zostaną wykonane wielokrotnie) w każdym cyklu pętli zewnętrznej Można dowolnie zagnieżdżać pętle, bez względu na ich rodzaj

190

191 Tablica Zmienna będąca tablicą reprezentuje zbiór wartości mających ten sam typ danych. Możliwe jest tworzenie tablic mających do 60 wymiarów Elementy tablicy są zmiennymi tych samych typów Dostęp do elementów tablicy jest możliwy poprzez ich indeksy, czyli liczby określające położenie w każdym wymiarze Każdemu zestawowi możliwych indeksów odpowiada dokładnie jeden element tablicy Najmniejszą i największą dozwoloną wartość każdego indeksu podaje się w deklaracji tablicy

192 Deklarowanie tablic Deklaracja tablicy rezerwuje w pamięci miejsce na przechowywanie wartości znajdujących się w tablicy. Dim nazwaTablicy([najmniejszyIndeks1 To] najwiekszyIndeks1, [...]) As typ Jeśli tablica została zadeklarowana bez wskazania najmniejszego dozwolonego indeksu, to będzie on równy ustawieniu Option Base Opcja Option Base może przyjmować wartości 0 (domyślnie) i 1

193 Deklarowanie tablic Przykłady: Dim Nazwiska(20) As String Dim Imiona$(10) Dim DatyWazne(5) As Date Dim WartosciFunkcji(1000) As Double Dim Macierz(1 To 10, 1 To 20) As Integer

194 Użycie tablic Dostęp do składowych tablicy jest możliwy poprzez podanie wszystkich indeksów oddzielonych przecinkami, zawartych w nawiasach Podawane indeksy muszą mieścić się w ograniczeniach podanych w deklaracji

195 Użycie tablic Przykłady: Nazwiska(1) = "Abacki" s = s & Imiona(5) DatyWazne(5) = Now() WartosciFunkcji(i) = _ WartosciFunkcji(i-1) + WartosciFunkcji(i-2) Macierz(3,3) = 1

196 Użycie tablic

197 Tablice dynamiczne Tablice, których rozmiar może ulegać zmianie podczas pracy programu Schemat użycia: 1. Zadeklarować bez podania dozwolonych indeksów: Dim tab() As Integer 2. Wyznaczyć początkowy rozmiar tablicy: ReDim tab(3,3) 3. Zmienić rozmiar tablicy z wyczyszczeniem: ReDim tab(2,5) 4. Zmienić rozmiar tablicy z zachowaniem aktualnych wartości: ReDim Preserve tab(5,3)

198

199 Funkcje obsługi tablic Array - utworzenie zmiennej typu Variant będącej jednowymiarową tablicą, np. Dim tab As Variant tab = Array("pierwszy", "drugi", "trzeci") IsArray - sprawdzenie, czy dana zmienna jest tablicą, np. IsArray(tab)

200 Funkcje obsługi tablic Erase - wyczyszczenie tablicy, w przypadku tablicy dynamicznej zwalniana jest przydzielona jej pamięć, np. Erase(tab) LBound - podaje najmniejszy indeks tablicy, np. LBound(tab) UBound - podaje największy indeks tablicy, np. UBound(macierz,2)

201 Tablica parametrów funkcji Sposób na przekazywanie do procedury lub funkcji zmiennej liczby parametrów Parametr typu ParamArray, np. Function suma(ParamArray liczby() _ As Variant) As Double Function suma(ParamArray liczby()) As Double Parametr musi być dynamiczną tablicą elementów typu Variant

202 Tablica parametrów funkcji

203


Pobierz ppt "Visual Basic for Applications Joanna Porter-Sobieraj"

Podobne prezentacje


Reklamy Google