Tworząc
niniejszą stronę wykorzystałem m. in. treści, które zawarte były na:
Inicjowanie
zmiennych i nadawanie im wartości
Zmienne na prywatnym poziomie procedury
Zmienne prywatnego poziomu modułu
Zmienne publicznego poziomu modułu
Programy manipulują danymi, które są przechowywane w
zmiennych. Zmienne mają różne atrybuty i mogą przechowywać różne typy danych
(liczby, tekst, data i tak dalej). Stąd termin typ danych. 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 zdeklarowanie 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. Na przykład, zmienna X może zmieniać się od 0, do -1, do 32767 i
następnie znowu do 0 podczas trwania pojedynczej procedury. Z punktu widzenia komputera zmienna jest
jednym obszarem w pamięci, którego zawartość może zmieniać się podczas
wykonywania programu. Pozostając przy poprzednim przykładzie zmienna X może
zajmować dwa bajty (16 bitów) pamięci, podczas gdy jej zawartość może zmieniać
się od 0 do -1, do 32767 i ponownie do 0.
|
Nazwa |
Znaczenie Pol |
Przykład |
Zakres |
bln |
Boolean |
Logiczny |
Bln_Widoczny |
true false |
byt |
Byte |
Bajt |
Byt_Rozmiar |
|
cur |
Currency |
Walutowy |
Cur_Wyplata |
± 9*1015 |
dtm |
Date |
Data |
Dtm_Rozpoczecie |
|
dbl |
Double |
Rzeczywisty |
Dbl_Pomiar |
Od
4.9E-324 do 1.7E+308 |
int |
Integer |
Całkowity |
Int_Licznik |
Od
-32768 do 32768 |
lng |
Long |
Całkowity |
Lng_Odleglosc |
Od
–2E9 do 2E9 |
obj |
Object |
Object |
Obj_Arkusz |
|
sng |
Single |
Rzeczywisty |
Sng_Liczba |
Od
1.4E-45 do 3.4E+38 |
str |
String |
Łańcuchowy |
Str_Komunikat |
tekst
o długości < 32767 znaków |
var |
Variant |
jeden
z wyżej wymienionych |
Var_JakasWartosc |
dowolny
typ- zgodny z pierwszym przypisaniem |
Deklarując zmienną określa się typ danych jaki może przyjmować
ta zmienna. Aby to zrobić, należy użyć instrukcji Dim. Słowo Private
określa deklarowanie zmiennej prywatnej a Public zmiennej publicznej.
Dim
liczba As Integer
Public
liczba As Integer
Private
liczba_1, liczba_2 As Single
·
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
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żenie
Wyraż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ład użycia operatora podstawienia:
intLiczba = 1
varWynik = 10 + 5 * sngUlamek
intKomunikat = MsgBox ("To jest
komunikat")
dblX = dblY
blnOtwarty = True
Zmiennej intLiczba przypisywana jest wartość 1.
Zmiennej varWynik przypisywany jest wynik działania (10+5*sngUlamek) obliczony
zgodnie z zasadami wykonywania działań matematycznych określonymi przez
priorytety operatorów matematycznych. Zmiennej intKomunikat przypisywany jest
wynik działania funkcji MsgBox() (najpierw wykonywana jest funkcja, a po jej
zakończeniu otrzymany z funkcji wynik jest przypisywany zmiennej). Zmiennej
dblX przypisywana jest wartość zmiennej dblY.
Zmiennej blnOtwarty przypisano wartość True
Typ danych zapisywanego wyrażenia musi być zgodny z
typem danych zmiennej. Niepoprawne jest więc przypisanie:
sngLiczba = "sto dwa"
sngLiczba jest liczbą typu Single a po prawej
stronie operatora podstawienia występuje wyrażenie łańcuchowe.
Visual Basic dokonuje automatycznie kilka rodzai
konwersji. Można np. użyć podstawienia:
intLiczba = 91.2
Zmienna intLiczba 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ą intLiczba. 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.
Dim
strTekst As String*10
strTekst = "To jest jakis dlugi tekst"
Zmienna strTekst została zadeklarowana jako zmienna
łańcuchowa o długości 10 znaków. Przy podstawieniu łańcucha "To jest jakis
dlugi tekst" zostanie on obcięty do 10 znaków ("To jest ja") i
taki łańcuch zostanie podstawiony pod zmienną strTekst. Charakterystycznym
przykładem wykorzystania kolejności wykonywania operacji operatora podstawienia
jest inkrementacja i dekrementacja (zwiększanie i zmniejszanie) wartości
zmiennej. Jest to zapis niezgodny z konwencjami matematycznymi i dlatego przy
pierwszym napotkaniu wydaje się niepoprawny.
NazwaZmiennej = NazwaZmiennej operator Wyrażenie
Operator jest operatorem matematycznym, logicznym
lub łańcuchowym (w zależności od typu zmiennej). Ponieważ najpierw jest
wykonywane działanie po prawej stronie, więc najpierw zostanie obliczona
wartość tam występująca a dopiero potem nowa wartość zostanie podstawiona pod
zmienną NazwaZmiennej.
Przykład:
intLiczba = 10
ntLiczba = intLiczba + 5
Zmiennej intLiczba przypisywana jest wartość 10.
Wartość zmiennej intLiczba zostanie zwiększona później o 5 (10+5) i przypisana
zmiennej intLiczba. Po wykonaniu podstawienia zmienna intLiczba będzie miała
wartość 15. Ten sposób podstawienia jest często wykorzystywany np. w pętlach.
Zmienna z zasięgiem prywatny poziom procedury
jest widoczna dla jej procedury macierzystej - procedury, w której została
zadeklarowana. Na przykład, jeżeli mamy trzy różne procedury, w których została
zadeklarowana zmienna intLiczba, możemy zmodyfikować intLiczba w
dowolnej procedurze bez wpływu na intLiczba w pozostałych procedurach.
Aby utworzyć zmienną na prywatnym poziomie procedury
należy ją zadeklarować w procedurze ze słowem Dim. Na przykład, w następującej
procedurze Sub, intLiczba jest zmienną Integer prywatnego poziomu procedury:
Sub Oblicz()
Dim intLiczba As Integer
intLiczba=10
varWynik = intLiczba * 10
End Sub
Możemy również utworzyć zmienne prywatnego poziomu
procedury nie przez zadeklarowanie ich, a przez umożliwienie ich automatycznego
zadeklarowania przez Visual Basic jako Variant (jeżeli nie występuje Option
Explicit).W powyższym przykładzie varWynik jest zmienną prywatnego poziomu
procedury typu Variant. Zmienne prywatnego poziomu procedury są przydatne do
tymczasowych obliczeń, których wyniki nie muszą być przekazywane do innych
procedur. Visual Basic nie jest zaopatrzony w zmienne publicznego poziomu
procedury. Wszystkie zmienne na poziomie procedury są prywatne.
Zmienne z zasięgiem prywatnego poziomu modułu
są widzialne dla wszystkich procedur w ich macierzystym formularzu lub module,
ale nie dla innych formularzy lub modułów. Na przykład, jeżeli zadeklarowano
sngLiczba jako zmienną prywatnego poziomu modułu, każdy wiersz kodu w tym
formularzu, który odnosi się do sngNumber, będzie odnosił się do tej zmiennej.
Aby utworzyć zmienną prywatnego poziomu modułu, należy użyć Private w celu
zadeklarowania zmiennej prywatnej w części General Declarations
formularza lub ogólnego modułu.
Przykład zadeklarować sngLiczba jako zmiennej Single
prywatnego poziomu modułu:
Private
sngLiczba As Single
Zmienne poziomu modułu są przydatne do obliczeń,
których wyniki mają być wspólne dla różnych procedur w jednym formularzu lub
module. Moduł odnosi się zarówno do plików typowego modułu, jak i plików
formularza (które czasami są nazywane plikami modułu formularza). To dlatego
zmienne poziomu modułu są widzialne dla typowych modułów i formularzy.
Zmienne z zasięgiem publicznego poziomu modułu
są widzialne dla każdej procedury w każdym formularzu w całym projekcie. Jeżeli
zadeklarowano strKomunikat jako zmienną publicznego poziomu modułu, każdy
wiersz kodu w każdym formularzu i module, który ma dostęp do strKomunikat,
będzie miał dostęp do tej zmiennej. Aby utworzyć zmienną publicznego poziomu
modułu, należy użyć instrukcji Public w celu zadeklarowania zmiennej publicznej
w części General Declarations typowego modułu (ale nie formularza).
Przykład deklaracji strKomunikat jako zmiennej String publicznego poziomu
formularza:
Public
strKomunikat As String
Zmienne publicznego poziomu modułu są przydatne do
obliczeń, których wyniki powinny być wspólne dla całości projektu ze wszystkimi
formularzami i/lub modułami.
Visual basic umożliwia deklarowanie tej samej nazwy
dla zmiennych lub stałych symbolicznych różnych zasięgów. Na przykład, można
zadeklarować dwie zmienne intNumber w ogólnym module: jedną zmienną publiczną,
a drugą zmienną prywatną. Która z tych dwóch zmiennych będzie używana w Visual
Basic zależy od tego, która część kodu została uruchomiona, kiedy została
zastosowana zmienna. Jeżeli procedura, w której zadeklarowaliśmy prywatną
zmienną intNumber, została uruchomiona, Visual Basic będzie używał zmiennej
prywatnej intNumber. Jeżeli ta procedura nie została uruchomiona, Visual Basic
zastosuje zmienną publiczną intNumber. Zmienne publiczne zostają przesłonięte
przez zmienne prywatne o tej samej nazwie. Wartość zmiennej publicznej nie
ulegnie zmianie a każde odwołanie do zmiennej będzie się odnosiło do zmiennej
prywatnej. Visual Basic zawsze używa zmiennej, która jest bliższa uruchomionemu
kodowi.