Elementy programowania 1
5. Zamykamy okno Dostosowywania. Makro uruchamiamy jednym kliknięciem przycisku
4. Przypisujemy do przycisku nasze makro
3. Metodą przeciągnij i upuść przenosimy Przycisk niestandardowy w wybrane miejsce paska narzędzi.
Przypisanie makra do przycisku na pasku narzędzi
1. Wybieramy z menu Widok Paski narzędzi Dostosuj…2. W oknie Dostosowywanie wybieramy kartę Polecenia i szukamy kategorii Makra
Elementy programowania 2
Bezpieczeństwo makr
Program Excel zapewnia ochronę przed wirusami, które mogą być przenoszone w makrach. Makra udostępniane innym użytkownikom można podpisywać za pomocą podpisu cyfrowego, aby mogli oni sprawdzić, że makra pochodzą z wiarygodnego źródła. Za każdym razem podczas otwierania skoroszytu zawierającego makra można zweryfikować źródło pochodzenia makr przed ich uaktywnieniem.
Elementy programowania 3
Bezpieczeństwo makr
poziom zabezpieczeń definiujemy na karcie Poziom zabezpieczeń w oknie dialogowym Zabezpieczenia (Narzędzia Makro Zabezpieczenia)
Zabezpieczanie makr
wybranie tej opcji spowoduje, że przy otwieraniu pliku z makrami pojawi się okno dialogowe:
po wybraniu niskiego poziomu zabezpieczeń dokument otwierany jest bez ostrzeżenia
Uwaga! Po zmianie poziomu należy zamknąć plik (nie program!) i otworzyć ponownie
Elementy programowania 5
Kod źródłowy makraPrzejście do Edytora VBA (sposoby)Analiza makroprocedury:- makroprocedury zaczynają się od słowa kluczowego Sub i
kończą słowem kluczowym End Sub,- po słowie Sub znajduje się nazwa makra i para nawiasów (),- pomiędzy słowami Sub i End Sub znajduje się ciąg instrukcji
czytanych przez VB od góry do dołu,- linie rozpoczynające się znakiem apostrofu (’) i wyświetlane w
kolorze zielonym to linie komentarza,- zbyt długie linie kodu, które chcemy kontynuować w
następnej linii poprzedzamy spacją i dolną kreską ( _).
klikając ten przycisk można
uruchomić makro
Elementy programowania 7
Komentarz
• kolor komentarza można zmienić wybierając polecenia: Tools Options…, na karcie Editor Format poszukać kodu Comment Text i zmienić kolor na inny,
• komentarz można dodać w dowolnym miejscu kodu, również na końcu linii kodu, np.
.GridlineColorIndex = 4 ' zmienia kolor siatki
• linie komentarza nie wykonują żadnego zadania poza informacyjnym,
Opis języka VB
Zmienne
Programy manipulują danymi, które są przechowywane w zmiennych. Zmienne mają różne atrybuty i mogą przechowywać różne typy danych (liczby, tekst, datę itd.). W Visual Basicu wszystkie zmienne są tworzone jednakowo: na przykład zmienna, która jest przechowywana w pamięci jako sekwencja bitów 01001111, reprezentuje literę O - jeżeli zmienna jest znakiem, lub liczbę 79 - jeżeli zmienna jest liczbą całkowitą. Przez zadeklarowanie zmiennej jako określonego typu danych określa się dla Visual Basic typ danych przechowywanych przez zmienną (sposób interpretacji danej przechowywanej w pamięci).Z punktu widzenia programisty zmienna jest elementem, którego wartość może ulegać zmianie podczas wykonywania programu. Z punktu widzenia komputera zmienna jest jednym obszarem w pamięci, którego zawartość może zmieniać się podczas wykonywania programu.
Elementy programowania 10
Zmienne - nazewnictwo• nazwa zmiennej może składać się z liter, cyfr i
niektórych znaków przestankowych z wyjątkiem: , # $ % & @ !
• musi mieć od 1 do 40 znaków,• nie może zaczynać się od cyfry i nie może zawierać
odstępów (spacji),• VB nie rozróżnia małych i wielkich liter,• nie wolno używać jako nazwy zmiennej słów
kluczowych języka,• nazwa powinna kojarzyć się z jej rolą.
Elementy programowania 11
Typy danych
• Termin „typ danych” określa sposób przechowywania danych w pamięci (w postaci cyfr, napisów, dat, obiektów itd.).
• Typ zmiennej nadaje się podczas tzw. „deklaracji zmiennej”.
• Jeżeli nie nadamy zmiennej typu to VB przypisze typ o nazwie Variant.
Typ DanychWielkośćpamięci
Zawartość Zakres
Byte 1 bajt Liczba całkowita 0 do 255
Boolean 2 bajty Wartość logiczna True lub False
Integer 2 bajty Liczba całkowita -32,768 do 32,767
Long 4 bajty Liczba całkowita długa-2,147,483,648 do
2,147,483,647
Single 4 bajtyliczba rzeczywista
(zmiennopozycyjna)
Ujemne:-3.402823E38 do -1.401298E-45
Dodatnie: 1.401298E-45 do 3.402823E38
Typ DanychWielkość pamięci
Zawartość Zakres
Double 8 bajtówliczba rzeczywista
(zmiennopozycyjna)
Ujemne:-0.79769313486232E308 do -
4.94065645841247E-324Dodatnie: 4.94065645841247E-324 do 1.79769313486232E308
Currency 8 bajtówliczba całkowita
z ustaloną kropką dziesiętną
-922,337,203,685,477.5808 do -922,337,203,685,477.5807
Date 8 bajtówdata
(miesiąc/dzień/rok)1/1/100 do 1/31/9999
Object 4 bajty adres obiektuodesłanie do wartości
obiektowej
Typ Danych
Wielkość pamięci Zawartość Zakres
String
10 bajtów + długość stringu (dla zmiennej
długości stringu); długość stringu (dla stringów o ustalonej
długości)
łańcuch znaków
0 do 2 miliardów znaków dla Windows 95 (0 do 65,400 dla
Windows 3.1 i wersji wcześniejszych)
Variant(z liczbami)
16 bajtów dowolne dane każda wartość numeryczna
Variant(ze znakami)
22 bajty + długość stringu
dowolne dane (poza stringiem o
ustalonej długości i typem
zdefiniowanym przez użytkownika)
taki sam zakres co zmiennej typu String
Elementy programowania 15
Deklarowanie zmiennych
Sposób deklaracji zmiennej:Dim zmienna As typ
gdzie zmienna jest nazwą zmiennej, a typ określa typ danych przechowywanych przez zmienną.
Uwaga! Pominięcie słowa kluczowego As i typu zmiennej spowoduje, że zmienna będzie typu Variant.Przykład: Dim NazwaPliku As String Dim liczbaPi As Double Dim koszt As Integer
Elementy programowania 16
Deklarowanie zmiennych
• nie jest konieczne ale zalecane,• nie jest obowiązkowe na początku procedury,• oszczędza pamięć, zapobiega błędom,
przyspiesza wykonanie procedury.
Elementy programowania 17
Przyrostki
Używane są w deklaracji zmiennych skracając zapis tej deklaracji:Dim Wiek % - oznacza, że zmienna Wiek jest typu Integer
Przyrostek Typ danych
% Integer
& Long
! Single
# Double
@ Currency
$ String
Elementy programowania 18
Inicjowanie zmiennych
Jeżeli zmienna nie zostanie zainicjowana wartością, to: • zmiennej numerycznej nadawana jest wartość 0, • zmiennej łańcuchowej o stałej długości przypisywany
jest łańcuch o zerowej długości (""), • zmienna łańcuchowa o stałej długości zostanie
wypełniona zerami, • zmienna typu Variant jest inicjowana jako Empty, • każdy element typu użytkownika jest inicjowany jak
pojedyncza zmienna określonego typu.
Elementy programowania 19
Stałe• wartości zadeklarowane na stałe, nie zmieniają się w
programie,• przykładem może być liczba π = 3,1416… - nie ulega zmianie i
można ją zdeklarować jako stałą,• dobrym nawykiem jest deklarowanie stałych dla wartości,
które nie zmieniają się (zapobiega to przypadkowym zmianom tej wartości),
• stałej przypisujemy nazwę, dzięki której mamy do niej dostęp (zamiast za każdym razem pisać 3,1416 piszemy nazwę stałej mającej tę wartość, np. pi),
• stała może być określona jako liczba lub łańcuch,• reguły nazewnictwa dla stałych są identyczne jak dla
zmiennych.
Elementy programowania 20
Deklarowanie stałych
Const nazwa_stałej = wartośćPrivate Const nazwa_stałej = wartośćPublic Const nazwa_stałej = wartość
np.Const rabat = 0.5Const pi = 3.1416
Elementy programowania 21
Stałe wewnętrzne
• Excel i VB maja długą listę stałych wewnętrznych, które nie wymagają deklaracji,
• można je przejrzeć w oknie Przeglądarki obiektów,• stałą wewnętrzną wystarczy wpisać w odpowiednim
miejscu kodu, lub dołączyć ją bezpośrednio z okienka Object Browser.
Elementy programowania 22
Operatory
• operatory wykonują operacje arytmetyczne, logiczne, łańcuchowe, podstawienia lub porównania,
Operatory arytmetyczneoperator opis przykład
^ potęgowanie 2 ^ 3 = 8
- znak liczby -5
* mnożenie 2 * 3 = 6
/ dzielenie 3 / 2 = 1.5
\ dzielenie całkowite 3 \ 2 = 1
mod dzielenie modulo 3 Mod 2 = 1
+ dodawanie 2 + 3 = 5
- odejmowanie 2 – 3 = -1
Elementy programowania 24
Operatory porównania
operator opis przykład
= równezwraca True gdy wartości są równe np.:
2 = 2 => True 2 = 3 => False
<> różne odzwraca True gdy wartości są różne np.:
2 <> 2 => False 2 <> 3 => True
> większe odZwraca True jeżeli wartość po lewej jest większa od wartości po prawej stronie znaku, np. 3 > 2 => True
< mniejsze odZwraca True jeżeli wartość po prawej jest mniejsza od wartości po lewej stronie znaku, np. 2 < 3 => True
25
Operatory porównania
operator opis przykład
>= większe lub
równe
Zwraca True jeżeli wartość po lewej jest większa lub równa wartości po prawej stronie znaku, np. 2 >= 2 => True
<= mniejsze lub równe
Zwraca True jeżeli wartość po prawej jest mniejsza lub równa wartości po lewej stronie znaku, np.: 2 <= 2 => True
Like porównanie łańcuchów
Operator ten służy do porównywania ciągów. Jeżeli ciąg pasuje do wzorca, wynikiem jest wartość True; w przypadku braku dopasowania, wynikiem jest wartość False. Jeżeli ciąg lub wzorzec ma wartość Null, wynikiem jest wartość Null.
Elementy programowania 26
Operator znakowy (łańcuchowy)
operator opis przykład
& konkatenacja
(łączenie)
„Przykład” & ”zastosowania” = „Przykład zastosowania”
operator ten działa tylko na zmiennych typu String
Elementy programowania 27
Operatory logiczne
operator opis
Not negacja Zwraca logiczną negację wyrażenia: Not True = False
And iloczyn logiczny, koniunkcja
Zwraca logiczną koniunkcję dwóch wyrażeń
Or suma logiczna alternatywa
Zwraca logiczną alternatywę dwóch wyrażeń
Xor nierównoważność Zwraca logiczną różnicę symetryczną dwóch wyrażeń
Eqv równoważność Zwraca logiczną równoważność dwóch wyrażeń
Imp implikacja Zwraca logiczną implikację dwóch wyrażeń
Elementy programowania 28
Zasady pierwszeństwa operatorów
• jeżeli wyrażenie zawiera operatory należące do różnych kategorii, najpierw wykonywane są działania operatorów arytmetycznych, potem operatorów porównania i operatorów logicznych,
• wszystkie operatory porównania mają taki sam priorytet i wykonywane są w takim porządku w jakim znajdują się w wyrażeniu w kolejności od lewej do prawej,
• jeżeli mnożenie i dzielenie wystąpią razem wykonywane są w kolejności od lewej do prawej, jeżeli dodawanie i odejmowanie wystąpią razem wykonywane są w kolejności od lewej do prawej,
• kolejność operatorów można zmieniać stosując nawiasy (w pierwszej kolejności są wykonywane operacje wewnątrz nawiasów (z zachowaniem kolejności) a później operacje poza nawiasami),
Elementy programowania 29
Zasady pierwszeństwa operatorów
operatory numeryczne negacja, *, /, \, Mod, +, -(odejmowanie), =
operatory znakowe &, =
operatory porównania=(porównanie), <>, <, >, <=, >=, Like, =
(przypisanie)
operatory logiczne Not, And, Or, Xor, Eqv, Imp, = (przypisanie)
porównanie obiektów Is, = (przypisanie)
Elementy programowania 30
Nadawanie wartości zmiennym
Aby nadać zmiennej określoną wartość należy użyć operatora podstawienia oraz opcjonalnego rozkazu Let. Z lewej strony tego operatora należy podać nazwę zmiennej, której wartość ma być zmieniona. Z prawej strony należy podać wyrażenie, które zostanie przypisane zmiennej.Składnia podstawienia wartości pod zmienną:
NazwaZmiennej = WyrażenieWyrażeniem może być liczba, ciąg znaków (w zależności od typu zmiennej), wynik operacji (logicznej, matematycznej, łańcuchowej), wywołanie funkcji, inna zmienna.Zawsze najpierw wykonywane jest to, co się znajduje po prawej stronie operatora podstawienia, a dopiero potem wynik tego działania jest podstawiany pod zmienną NazwaZmiennej.
Przykłady użycia operatora podstawienia
Liczba = 1Zmiennej Liczba przypisywana jest wartość 1
Wynik = 10 + 5 * UlamekZmiennej Wynik przypisywany jest wynik działań
Komunikat = MsgBox ("To jest komunikat")
Zmiennej Komunikat przypisywany jest wynik działania funkcji MSgBox
lX = lYZmiennej IX przypisywana jest wartość zmiennej IY
Otwarty = TrueZmiennej Otwarty przypisano wartość True
Elementy programowania 32
Nadawanie wartości zmiennym
• typ danych zapisywanego wyrażenia musi być zgodny z typem danych zmiennej. Jeżeli zmienna Liczba będzie typu Single to niepoprawne będzie przypisanie:
Liczba = „sto dwa”(Liczba jest typu Single a po prawej stronie operatora podstawienia występuje wyrażenie łańcuchowe)
• Visual Basic dokonuje automatycznie kilku rodzajów konwersji. Można np. użyć podstawienia:
Liczba = 91.2(zmienna Liczba jest typu Integer a więc liczbą całkowitą. Po prawej stronie wyrażenia występuje liczba 91.2 a więc liczba ułamkowa. VB automatycznie dokona konwersji do najbliższej liczby całkowitej (91) i taką wartość podstawi pod zmienną Liczba)
Elementy programowania 33
Nadawanie wartości zmiennym• jeżeli zmienna zostanie zadeklarowana jako String o
określonej długości to przy próbie podstawienia pod nią łańcucha znaków o długości większej niż długość zmiennej zostanie on obcięty do liczby znaków możliwych do zapisania w tej zmiennej. Np.:
Dim Tekst As String*10Tekst = „To jest jakiś długi tekst”
(zmienna Tekst została zadeklarowana jako zmienna łańcuchowa o długości 10 znaków. Przy podstawieniu łańcucha „To jest jakiś długi tekst” zostanie on obcięty do 10 znaków („To jest ja”) i taki łańcuch zostanie podstawiony pod zmienną Tekst)
34
Nadawanie wartości zmiennym
Charakterystycznym przykładem wykorzystania kolejności wykonywania operacji operatora podstawienia jest inkrementacja i dekrementacja (zwiększanie i zmniejszanie) wartości zmiennej. NazwaZmiennej = NazwaZmiennej operator WyrażenieOperator jest operatorem matematycznym, logicznym lub łańcuchowym (w zależności od typu zmiennej).Ponieważ najpierw jest wykonywane działanie po prawej stronie, najpierw zostanie obliczona wartość tam występująca, a dopiero potem nowa wartość zostanie podstawiona pod zmienną NazwaZmiennej.Przykład:
Liczba = 10Liczba = Liczba + 5
(zmiennej Liczba przypisywana jest wartość 10. Wartość zmiennej Liczba zostanie zwiększona później o 5 (10+5) i przypisana zmiennej Liczba. Po wykonaniu podstawienia zmienna Liczba będzie miała wartość 15)