Tworząc niniejszą stronę wykorzystałem m. in. treści, które zawarte były na:

http://www.vbkurs.punkt.pl

 

Zmienne

Nazwy zmiennych

Deklarowanie zmiennych

Inicjowanie zmiennych i nadawanie im wartości

Nadawanie wartości zmiennym

Zmienne na prywatnym poziomie procedury

Zmienne prywatnego poziomu modułu

Zmienne publicznego poziomu modułu

Przesłanianie

 

 

Zmienne

 

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.

 

Nazwy zmiennych

 

 

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

 

Deklarowanie zmiennych

 

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

 

Inicjowanie zmiennych i nadawanie im wartości

·       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

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

 

Zmienne na prywatnym poziomie procedury

 

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 prywatnego poziomu modułu

 

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 publicznego poziomu modułu

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.

Przesłanianie

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.