Programowanie w VBA

32
Programowanie Programowanie w VBA w VBA Podstawy. Zmienne. Stałe. Podstawy. Zmienne. Stałe. Operatory. Relacje. Operatory. Relacje. Wyrażenia. Warunki. Wyrażenia. Warunki.

description

Programowanie w VBA. Podstawy. Zmienne. Stałe. Operatory. Relacje. Wyrażenia. Warunki. Nazwy zmiennych/stałych. ciągi liter i cyfr nie powinny zawierać znaków narodowych nie mogą zawierać znaków specjalnych: , (), :, ;, itp. (dopuszczalny znak podkreślenia _) - PowerPoint PPT Presentation

Transcript of Programowanie w VBA

Page 1: Programowanie w VBA

ProgramowanieProgramowaniew VBAw VBA

Podstawy. Zmienne. Stałe.Podstawy. Zmienne. Stałe.Operatory. Relacje.Operatory. Relacje.

Wyrażenia. Warunki.Wyrażenia. Warunki.

Page 2: Programowanie w VBA

Nazwy zmiennych/stałychNazwy zmiennych/stałych• ciągi liter i cyfr• nie powinny zawierać znaków narodowych• nie mogą zawierać znaków specjalnych: <spacja>, (), :, ;, itp.

(dopuszczalny znak podkreślenia _)• mogą mieć dowolną długość• wielkie i małe litery NIE są rozróżniane• nazwa MUSI rozpoczynać się literą• wskazane jest nadawanie nazw znaczących

• Zmienne i stałe nazywamy najlepiej za pomocą małych liter, bez polskich znaków

Page 3: Programowanie w VBA

Przechowywanie danych w pamięciPrzechowywanie danych w pamięciPodstawową jednostką informacji jest bit. Bit może przyjąć jeden z dwóch stanów:- zapalony 1- zgaszony 0Osiem uporządkowanych bitów to bajt.Bajt może przyjąć jeden z 256 (28) stanów0-255

X X X X X X X X128 64 32 16 8 4 2 1

Page 4: Programowanie w VBA

X X X X X X X X 128 64 32 16 8 4 2 1

0 0 0 0 0 0 0 0 = 01 1 1 1 1 1 1 1 = 2550 0 1 0 1 1 0 1 = 45

Page 5: Programowanie w VBA

• System binarny/dwójkowy nie określa znaku liczby (z założenia wszystkie są dodatnie) i precyzji – wszystkie są całkowite.

• Do określenia znaku liczby wykorzystuje się najmłodszy bit ciągu.

• Obliczenia precyzyjne wykonywane są w trybie zmiennoprzecinkowym.

Page 6: Programowanie w VBA

• Aby przechowywać dane trzeba wydzielić dla nich odpowiedni obszar pamięci zależny od ich wielkości.

• Aby operować zmiennymi/stałymi trzeba określić ich typ – przeznaczyć dla nich odpowiednią ilość pamięci

Typ Zakres wartości Liczba bajtów

Byte 0-255 (28 -1) 1

Integer -32768 ÷ 32767 (- 215 ÷ 215 -1) 2

Long - 2147483648 ÷ 2147483647 (- 231 ÷ 231 -1) 4

Single ±(1,5E-45 ÷ 3,4E38) 4

Double ±(5E-324 ÷ 1,7E308) 8

Page 7: Programowanie w VBA

o Do zapamiętywania łańcuchów danych (tekstu itp.) służą zmienne typu String.

o Maksymalna liczba znaków w zmiennej typu String to 216 – 65536.

o Znaki w pamięci przechowywane są w postaci binarnej – wartości od 1 do 255 przypisane są określonym znakom w standardzie ASCIIo 1 ÷ 31 – znaki sterujące, niewyświetlaneo 32 ÷ 127 – kod podstawowyo 128 ÷ 255 – kod rozszerzony

Page 8: Programowanie w VBA

o Dla operacji logicznych zarezerwowana jest zmienna typu Boolean – przyjmuje ona wartości TRUE (1) i FALSE (0)

o Daty przechowywane są w zmiennych typu Date

o Kwoty przechowywane są w zmiennych typu Currency

Page 9: Programowanie w VBA

Operuje się:– liczbami całkowitymi– liczbami zmiennoprzecinkowymi– ciągami znaków– wartościami logicznymi– datami– kwotami

• Niezależnie od ustawień regionalnych separatorem dziesiętnym w VB jest . <kropka>

Page 10: Programowanie w VBA

• Jeśli nie zadeklarowany jest typ zmiennej zostanie ona przypisana do typu Variant, który może przechowywać dowolne wartości.

• Aby wymusić deklarowanie zmiennych w programie na początku programu umieszcza się polecenie:

Option Explicit

Page 11: Programowanie w VBA

Deklaracje zmiennychDeklaracje zmiennychDim nazwa_zmiennej As typ_zmiennej

np.: Dim delta As double

Długość łańcucha znaków przechowywanego w zmiennej typu String można ograniczać:

Dim tekscik As String * 25

Definiuje zmienną tekscik typu String o długości do 25 znaków

Page 12: Programowanie w VBA

TabliceTabliceZłożone operacje na dużej ilości zmiennych tego samego typu mogą spowalniać wykonywanie programu. W celu przyspieszenia oraz wygody można definiować tablice będące zbiorem wartości tego samego typu.

Tablice VBA mogą mieć dowolny wymiar jednak głównie używa się: 1-wymiarowych – wektorów 2-wymiarowych – macierze

Tablice definiuje się:

Dim wektor (indeks_1_el to indeks_ost_el) As typ_elementu

Dim macierz (i_1_el_1 to i_ost_el_1, i_1_el_2 to i_ost_el_2) As typ_elementu

Page 13: Programowanie w VBA

Po co definiować zmienne?Po co definiować zmienne?

• oszczędność pamięci• porządek dla programisty – łatwiejsze

zmiany i poprawki• przyspieszenie wykonywania programu• prawidłowe przechowywanie i operacje na

danych

Page 14: Programowanie w VBA

ZadaniaZadania• Zadeklaruj możliwie oszczędnie zmienne

do przechowywania następujących danych:– Liczba studentów w Twojej grupie;– Nazwisko studenta z Twojej grupy;– Masa cząstki elementarnej;– Ilość włosów na głowie (100 000-150 000);– Adres studenta z Twojej grupy.

Page 15: Programowanie w VBA

Błędy przy deklaracjachBłędy przy deklaracjach• Rodzaje błędów:

– Błąd przepełnienia zmiennej;– Błąd niezgodności typów;– Błędy sygnalizowane i niesygnalizowane;

• Przepełnienie to również zaokrąglanie w górę wartości ułamkowych dla zmiennych typu Byte;

• Przepełnienie/niezgodność typów: np. Byte+Byte=Integer (ale suma Byte wyższa niż 255);

Page 16: Programowanie w VBA

ZmienneZmienne• Zmienna "String * <liczba>" wypełniona ilością

znaków mniejszą niż <liczba> powoduje że pozostałe znaki są spacjami!Dim a As String * 6a = "abc"-> a nie jest równe "abc", tylko "abc "

• Początkowo każda zmienna liczbowa domyślnie jest równa 0.

• Zmienne, które istnieją po zadeklarowaniu w procedurze i istnieją aż przestanie się wykonywać jakikolwiek inny kod (nawet po zakończeniu działania tej jednej procedury) deklarujemy za pomocą słowa kluczowego "Static" (zamiast Dim)

Page 17: Programowanie w VBA

Deklaracje i używanie stałychDeklaracje i używanie stałych• Stała to pewna wartość (niekoniecznie liczbowa)

przypisana określonej nazwie.• Deklaruje się ją podobnie do zmiennej z tą

różnicą, że oprócz deklaracji typu nadaje się jej od razu wartość:

Const nazwa As typ = wartośćConst Rconst As Single = 8.31451

Const Uczelnia As String = „Politechnika Warszawska”

Page 18: Programowanie w VBA

Po co definiować stałe?Po co definiować stałe?

• porządek dla programisty – łatwiejsze zmiany i poprawki

• skrócenie kodu• mniejsza szansa na błędy

Page 19: Programowanie w VBA

Wyrażenia i operatoryWyrażenia i operatory• Wyrażenie – operacja wykonywana w celu

uzyskania wartości;• Składowe wyrażenia: zmienne, stałe, funkcje,

wartości (tekstowe, liczbowe, logiczne), operatory;

• Operatory:+, -, *, / (dzielenie), ^ (potęgowanie),= (przypisanie), \ (dzielenie całkowite),Mod (reszta z dzielenia całkowitego)Sqr (funkcja obliczająca pierwiastek argumentu);

Page 20: Programowanie w VBA

Operatory - kolejnośćOperatory - kolejność• Kolejność wykonywania operatorów: zmiana

znaku, tożsamość, potęgowanie, mnożenie (*,/,\,mod), dodawanie (+/-), przypisanie (=);

• Nawiasy – kolejność wykonywania od najgłębiej zagnieżdżonego – nie ma ograniczeń w zagnieżdżeniu! Warto używać nawiasów dla pewności, że operacje będą wykonywane w żądanej kolejności;

• Np.: x = (((x^(x-4*(3+2)))/(x mod 4))\3)

Page 21: Programowanie w VBA

Operacje na tekstachOperacje na tekstach• Konkatenacja – łączenie tekstów:

+ lub & • Np.:

"Jan" + "Kowalski" => "JanKowalski„ "Jan" & Chr(32) & "Kowalski" => „Jan Kowalski”

"A" & Chr(98) & "c" => „Abc”ALE1 + 2 = "3"1 & 2 = "12"(gdzie liczby mogą być też w postaci zmiennych typu string/variant)

• Uwaga, operator + może być używany tylko do zmiennych tego samego typu (liczbowy/tekstowy), na potrzeby konkatenacji Variant liczy się jak string, o ile dodawany jest do stringa.

Page 22: Programowanie w VBA

Operacje logiczneOperacje logiczne• Operacje logiczne mają wynik

PRAWDA (true, 1) lub FAŁSZ (false, 0);• Operacje mogą być prowadzone na zmiennych typu

Boolean lub liczbach całkowitych (czyli porównywanie ciągów reprezentacji binarnych tych liczb);

• Operatory logiczne:not (negacja - nie)and (koniunkcja - i)or (alternatywa - lub)xor (alternatywa symetryczna – suma mod 2)eqv (równoważność)imp (implikacja – jeśli... to...);

Page 23: Programowanie w VBA

Tablica prawdyTablica prawdyx y Not x Not y x And y x Or y x Xor y x Eqv y x Imp y

0 0 1 1 0 0 0 1 1

0 1 1 0 0 1 1 0 1

1 0 0 1 0 1 1 0 0

1 1 0 0 1 1 0 1 1

Page 24: Programowanie w VBA

RelacjeRelacje• Relacje to porównanie dwóch argumentów

– wynik w formie wartości logicznej (0/1);• arg1 vs arg2• operatory: =, <>, <, >, <=, >=;

Page 25: Programowanie w VBA

Zgodność typówZgodność typów• UWAGA! Do większości porównań (relacji)

można używać różnych typów liczbowych, ale do przypisań muszą być one kompatybilne!

Page 26: Programowanie w VBA

Instrukcje warunkoweInstrukcje warunkowe• Służą do kierowania programem zależnie od

wartości wyrażenia logicznego (wyniku operacji logicznej);

• Jeśli wyrażenie jest fałszywe, to program wykonuje instrukcje od komendy Else;

• Blok instrukcji może być pusty;• Po zakończeniu wykonywania instrukcji z

danego bloku program wykonuje instrukcje dalej już po komendzie End If;

• Można zagnieżdżać warunki bez ograniczeń;

Page 27: Programowanie w VBA

Instrukcje warunkoweInstrukcje warunkowe• If <wyr1> Then

<instrukcje jeśli wyrażenie1=prawda>ElseIf <wyr2> Then <instrukcje jeśli wyr1=fałsz a wyr2=prawda>Else <instrukcje jeśli wyr1=fałsz i wyr2=fałsz>End If

Page 28: Programowanie w VBA

wyr1

wyr2

If <wyr1> Then <instrukcje1 jeśli wyrażenie1=prawda>

ElseIf <wyr2> Then <instrukcje2 jeśli wyr1=fałsz a wyr2=prawda>

Else <instrukcje3 jeśli wyr1=fałsz i wyr2=fałsz>

End If

instrukcje1

instrukcje2instrukcje3

NIE

NIE

TAK

TAK

Page 29: Programowanie w VBA

Intrukcje warunkoweIntrukcje warunkowe• Istnieje wersja skrócona bloku If w

przypadku jednolinijkowego bloku dla spełnionego warunku i braku komend w przypadku niespełnionego warunku:

If <warunek> then <polecenie>

• W tym przypadku (jako jedynym) nie pisze się ani słowa „Else” ani „End If”, jest to zamknięta konstrukcja jednolinijkowa.

Page 30: Programowanie w VBA

Instrukcje wyboruInstrukcje wyboruSelect Case zmienna

Case zakres1_w_stosunku_do_zmiennejBlok instrukcji_1

Case zakres2_w_stosunku_do_zmiennejBlok instrukcji_2

Case ElseBlok instrukcji_3

End Select

Page 31: Programowanie w VBA

wyr1

instrukcje3

CASE1 CASE else

instrukcje2instrukcje1

CASE2

Select Case zmiennaCase Is < 0 (jakieś wyrażenie nr1)

Blok instrukcji_1Case 1,3,4 (jakieś wyrażenie nr 2)

Blok instrukcji_2( Case 6 To 10

Blok instrukcji_3 )Case Else

Blok instrukcji_4End Select

Page 32: Programowanie w VBA

Korzystamy z pomocy (Help)!Korzystamy z pomocy (Help)!