Zmienne
Tomasz Węgrzyn
Katedra Matematyki Stosowanej
1
dr Tomasz Węgrzyn
Plan wykładu
1. Informacje podstawowe
2. Typy zmiennych
3. Zmienne lokalne, danego modułu, globalne
4. Zmienne obiektowe
5. Tablice
2
dr Tomasz Węgrzyn
Zmienne (1)
Zmienna jest nazwanym obszarem pamięci, gdzie przechowywane są dane.
Nazwa zmiennej powinna być:
- krótka,
- zrozumiała, tj. powinna kojarzyć się z rodzajem informacji przechowywanej przez
daną zmienną,
Przykłady:
- WszystkieKomorki,
- LiczKom,
- Licz_Kom, itd.
3
dr Tomasz Węgrzyn
Zmienne (2)
Podstawowe reguły definiowania zmiennych:
- nazwa zmiennej może składać się z cyfr i liter,
- nazwa zmiennej nie może zaczynać się od cyfry,
- język VBA nie rozróżnia wielkości liter,
- nazwa zmiennej nie może zawierać kropek ani spacji (zamiast nich
można użyć znaku _ ),
- nazwa zmiennej nie może zawierać znaków specjalnych: #, $, &, !
- nazwa zmiennej nie może być słowem kluczowym języka VBA np.:
name, date, len, empty, local, currency, exit, next
4
dr Tomasz Węgrzyn
Plan wykładu
1. Informacje podstawowe
2. Typy zmiennych
3. Zmienne lokalne, danego modułu, globalne
4. Zmienne obiektowe
5. Tablice
5
dr Tomasz Węgrzyn
Typy zmiennych
Definiowanie zmiennych:
- VBA nie wymusza definiowania typu zmiennej (danych), jednak
definiowanie zmiennych prowadzi do znacznie szybszego wykonywania
napisanych makr, PRZYKAAD
Typ danych określa w jakiej postaci dane są zapisywane w pamięci np.:
liczby całkowite, liczby rzeczywiste, litery (łańcuchy), obiekty.
Najefektywniej posługiwać się w danym momencie tym typem danych,
który zajmuje w pamięci najmniejszą ilość pamięci.
6
dr Tomasz Węgrzyn
Typy zmiennych
Typ danych Wielkość pamięci Zakres wartości
Byte 1 bajt Liczby całkowite: od 0 do 255
Boolean 2 bajty Wartość logiczna: True lub False
Integer 2 bajty Liczby całkowite: od 32 768 do 32 767
Long 4 bajty Liczby całkowite:
Od 2 147 483 648 do 2 147 483 648
Single 4 bajty Liczby rzeczywiste:
Od -3,4E38 do -1,4E-45 dla ujemnych
Od 1,4E-45 do 3,4E38 dla dodatnich
Double 8 bajtów Liczby rzeczywiste:
Od -1,79E308 do -4,94E-324 dla ujemnych
Od 4,94E-324 do 1,79E308 dla dodatnich
Date 8 bajtów Daty: Od 1.01.100 roku do 31.12.9999 roku
String 10 bajtów + długość łańcucha Tekst Od 0 do ok. 2 mld znaków
Lub Długość łańcucha Tekst Od 1 do ok. 65 400 znaków
Variant 16 bajtów lub Zawartość numeryczna max zm. Double
Typ domyślny 22 bajty + długość łańcucha Zawartość alfanumeryczna max zm. String
Object 4 bytes Przechowuje dowolny obiekt Excela.
7
dr Tomasz Węgrzyn
Wymuszanie deklarowania zmiennych
Wymuszenie deklarowania zmiennych realizowane jest poprzez instrukcję:
Option Explicit
Powyższą instrukcję należy umieścić w module VBA w pierwszym wierszu.
Jeżeli w makrze znajdzie się niezadeklarowana zmienna, to próba
wykonania danego makra spowoduje pojawienie się komunikatu błędu.
W celu automatycznego wymuszania deklarowania zmiennych należy
zaznaczyć opcję Require Variable Declaration w Tools | Options | Editor
8
dr Tomasz Węgrzyn
Plan wykładu
1. Informacje podstawowe
2. Typy zmiennych
3. Zmienne lokalne, danego modułu, globalne
4. Zmienne obiektowe
5. Tablice
9
dr Tomasz Węgrzyn
Zmienne lokalne
Zmienna lokalna jest deklarowana wewnątrz makra/procedury. Zmienna
tego typu może być używana wyłącznie w makrze w którym została
zadeklarowana! Po zakończeniu wykonywania makra zmienna lokalna
przestaje istnieć.
Deklaracja zmiennej:
Dim nazwa_zmiennej as typ_zmiennej
Sub deklaracja()
Dim NrKomorki As Integer
Dim LiczbaObserwacji As Long
Dim dzisiaj As Date
Dim uzytkownik As String * 30
Kod zródłowy procedury
End Sub
10
dr Tomasz Węgrzyn Przykład
Zmienne lokalne
Sub stopy_ln()
Zadaniem makra jest wyznaczenie
logarytmicznych stóp zwrotu.
Dim licz_w As Integer
Dim i As Integer
Jaki problem jest z tym makrem?
Dim akt As Integer
Dim pop As Integer
Dim stopa As Byte
licz_w = ActiveSheet.UsedRange.Rows.Count
For i = 3 To licz_w
akt = ActiveSheet.Cells(i, 6).Value
pop = ActiveSheet.Cells(i - 1, 6).Value
stopa = Application.WorksheetFunction.Ln(pop / akt)
ActiveSheet.Cells(i, 8).Value = stopa
Next i
End Sub
11
dr Tomasz Węgrzyn
Zmienne danego modułu
Zmienna danego modułu jest deklarowana na początku modułu dla
którego ma być dostępna. Zmienna tego typu może być używana przez
wszystkie makra znajdujące się w danym module! Po zakończeniu
wykonywania makra ten typ zmiennej nie traci swojej wartości, chyba, że
makro zakończy się słowem kluczowym End.
Przykład deklaracji zmiennych:
Dim ZmiennaDlaModulu1 As Integer
Dim ZmiennaDlaMoudlu2 As Double
Sub Makro1()
End Sub
Sub Makro2() PRZYKAAD
End Sub
12
dr Tomasz Węgrzyn
Zmienne globalne
Zmienna globalna jest deklarowana na początku modułu. Zmienna
tego typu może być używana przez wszystkie makra niezależnie od
modułu w którym się znajdują! Zmienna tego typu nie traci swojej wartości,
chyba, że makro zakończy się słowem kluczowym End.
Deklaracja zmiennych:
Public nazwa_zmiennej as typ_zmiennej
Public ZmiennaGlobalna1 as Date
Public ZmiennaGlobalna2 as String
PRZYKAAD
13
dr Tomasz Węgrzyn
Plan wykładu
1. Informacje podstawowe
2. Typy zmiennych
3. Zmienne lokalne, danego modułu, globalne
4. Zmienne obiektowe
5. Tablice
14
dr Tomasz Węgrzyn
Zmienne obiektowe (1)
Zmienna obiektowa zmienna reprezentująca cały obiekt np. zakres
komórek, arkusz.
Zmienne obiektowe pozwalają uprościć kod zródłowy oraz pozwalają na
zwiększenie szybkości wykonywania makra.
Sposób deklaracji zmiennych obiektowych:
a) zmienna lokalna: Dim obiekt as object
b) zmienna na poziomie modułu: na początku modułu Dim obiekt as object
c) zmienna globalna: Public obiekt as object
15
dr Tomasz Węgrzyn
Zmienne obiektowe (2)
Rodzaje zmiennych obiektowych:
a) object
b) worksheet
c) range
Przykład użycia:
Set obiekt = Worksheet("arkusz1").Range("a1")
obiekt.value = 124
obiekt.font.bold = true PRZYKAAD
16
dr Tomasz Węgrzyn
Plan wykładu
1. Informacje podstawowe
2. Typy zmiennych
3. Zmienne lokalne, danego modułu, globalne
4. Zmienne łańcuchowe, zmienne przechowujące datę
5. Zmienne obiektowe
6. Tablice
17
dr Tomasz Węgrzyn
Tablice jednowymiarowe
Tablica to grupa elementów tego samego typu posiadających wspólną nazwę. W
celu odwołania do określonego elementu tablicy używa się jej nazwy oraz numeru
indeksu.
Tablica jednowymiarowa często określana jest jako lista, np.:
- lista dni tygodnia,
- lista miesięcy,
- lista studentów Inżynierii Finansowej,
- lista książek,
- lista spółek,
itd.
18
dr Tomasz Węgrzyn
Tablice jednowymiarowe
Każda wartość w tablicy posiada swój indeks (nr wiersza).
Jeżeli chcemy przechować pewne powiązane ze sobą dane (np. nazwy dni tygodnia), to
zamiast siedmiu indywidualnych zmiennych można użyć zmiennej tablicowej, czyli nazwy po
której zapisujemy numer w nawiasie.
Przykład:
dzien_nazwa() jest nazwą tablicy
dzien_nazwa(1) = "Monday"
(zmiennej). Po nazwie w nawiasie zapisany
dzien_nazwa(2) = "Tuesday"
jest indeks. Aby odwołać się do wybranej
dzien_nazwa(3) = "Wednesday"
pozycji w liście należy użyć indeksu.
dzien_nazwa(4) = "Thursday"
Np. licz = 6
dzien_nazwa(5) = "Friday"
dzien_nazwa(6) = "Saturday"
Msgbox dzien_nazwa(licz)
dzien_nazwa(7) = "Sunday"
19
dr Tomasz Węgrzyn
Tablice jednowymiarowe
Deklaracja
W zależności od zasięgu zmiennej tablicowej, w celu jej deklaracji, należy użyć
słów kluczowych Dim lub Public.
Po nazwie zmiennej tablicowej (w nawiasie) należy określić wielkość tablicy (czyli
maksymalną liczbę elementów, która będzie przechowywana w tablicy).
Po słowie kluczowym as należy podać typ danych przechowywanych w tablicy
(string, integer, double, itd.)
Przykład:
Dim dni_tygodnia(7) as String
Dim miesiace(12) as String
Dim IF_imiona(17) as String
Dim tablica(1 to 12) as String
Dim tablica(11) as String => Dim tablica(0 to 11) as String
20
dr Tomasz Węgrzyn
Tablice jednowymiarowe
Deklaracja
Wszystkie dane przechowywane w danej tablicy muszą być tego samego typu!
Jeżeli w danej tablicy mają być przechowywane liczby oraz tekst, to dana tablica
musi zostać zadeklarowana jako variant.
Przykład:
Dim m_tablica(100) as variant
m_tablica(1) = "adam"
m_tablica(2) = 2
21
dr Tomasz Węgrzyn
Tablice wielowymiarowe
Tablica wielowymiarowa to tablica posiadająca więcej niż 1 wymiar. Np.
tablica dwuwymiarowa może być traktowana jako macierz. Deklarując macierz
wielowymiarową należy określić wielkość każdego z wymiarów. Maksymalnie
tablica może mieć 60 wymiarów.
Przykład:
Dim tablica(1 to 5, 1 to 5) as Integer
Dim tablica_2 (12,5) as double
aby odwołać się do elementu takiej tablicy podaje się
nr wiersza oraz nr kolumny:
infor = tablica(2,3)
22
dr Tomasz Węgrzyn
Deklarowanie tablic dynamicznych
Tablica dynamiczna deklarowana na początku programu, nie ma z góry zadanej
wielkości.
Przed pierwszym użyciem tablicy wymagane jest zdefiniowanie jej wielkości.
Deklaracja tablicy dynamicznej
Dim samochody() as Integer
W przypadku tablicy statycznej w () określa się wielkość tablicy. Natomiast w
przypadku tablicy dynamicznej określenie rozmiaru tablicy następuje w dalszej
części programu.
Deklaracja wielkości tablicy w programie
Redim samochody (wielkosc) zmienna wielkość przechowuje wartość
Wielkość tablicy może być uzależniona od odpowiedzi użytkownika programu.
23
dr Tomasz Węgrzyn
Plan wykładu
1. Informacje podstawowe
2. Typy zmiennych
3. Zmienne lokalne, danego modułu, globalne
4. Zmienne obiektowe
5. Tablice
24
Wyszukiwarka
Podobne podstrony:
NB ST W ,,11, emocje strach, agresja02 01 11W kolokwium1211 (311)ZADANIE (11)Psychologia 27 11 2012359 11 (2)11PJU zagadnienia III WLS 10 11Wybrane przepisy IAAF 10 11więcej podobnych podstron