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ć.

Download Report

Transcript 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ć.

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: <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
Przechowywanie danych w pamięci
Podstawową jednostką informacji jest bit.
Bit może przyjąć jeden z dwóch stanów:
- zapalony 1
- zgaszony 0
Osiem uporządkowanych bitów to bajt.
Bajt może przyjąć jeden z 256 (28) stanów
0-255
X X X X X X XX
128 64 32 16 8 4 2 1
X X X X X X X X
128 64 32 16 8 4 2 1
0 0 0 0 0 0 0 0=0
1 1 1 1 1 1 1 1 = 255
0 0 1 0 1 1 0 1 = 45
• 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.
• 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
Zakres wartości
Liczba
bajtów
0-255 (28 -1)
1
-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
Typ
Byte
Integer
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 ASCII
o 1 ÷ 31 – znaki sterujące, niewyświetlane
o 32 ÷ 127 – kod podstawowy
o 128 ÷ 255 – kod rozszerzony
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
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>
• 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
Deklaracje zmiennych
Dim 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
Tablice
Zł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
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
Zadania
• 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.
Błę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);
Zmienne
• Zmienna "String * <liczba>" wypełniona ilością
znaków mniejszą niż <liczba> powoduje że
pozostałe znaki są spacjami!
Dim a As String * 6
a = "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)
Deklaracje 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”
Po co definiować stałe?
• porządek dla programisty – łatwiejsze
zmiany i poprawki
• skrócenie kodu
• mniejsza szansa na błędy
Wyraż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);
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)
Operacje na tekstach
• Konkatenacja – łączenie tekstów:
+ lub &
• Np.:
"Jan" + "Kowalski" => "JanKowalski„
"Jan" & Chr(32) & "Kowalski" => „Jan Kowalski”
"A" & Chr(98) & "c" => „Abc”
ALE
1 + 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.
Operacje 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...);
Tablica prawdy
x 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
Relacje
• Relacje to porównanie dwóch argumentów
– wynik w formie wartości logicznej (0/1);
• arg1 vs arg2
• operatory: =, <>, <, >, <=, >=;
Zgodność 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!
Instrukcje 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ń;
Instrukcje 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
NIE
NIE
instrukcje3
wyr2
wyr1
TAK
TAK
instrukcje1
instrukcje2
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
Intrukcje 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.
Instrukcje wyboru
Select Case zmienna
Case zakres1_w_stosunku_do_zmiennej
Blok instrukcji_1
Case zakres2_w_stosunku_do_zmiennej
Blok instrukcji_2
Case Else
Blok instrukcji_3
End Select
CASE1
wyr1
CASE else
CASE2
instrukcje1
instrukcje2
instrukcje3
Select Case zmienna
Case Is < 0 (jakieś wyrażenie nr1)
Blok instrukcji_1
Case 1,3,4 (jakieś wyrażenie nr 2)
Blok instrukcji_2
(
Case 6 To 10
Blok instrukcji_3
)
Case Else
Blok instrukcji_4
End Select
Korzystamy z pomocy (Help)!