14
INSTRUCTIUNI DE BAZA IN VISUAL BASIC

VBA-ESENTIAL [Compatibility Mode]

Embed Size (px)

Citation preview

Page 1: VBA-ESENTIAL [Compatibility Mode]

INSTRUCTIUNI DE BAZA IN

VISUAL BASIC

Page 2: VBA-ESENTIAL [Compatibility Mode]

Instructiunea FOR / NEXT-repeta un ciclu de operatii care depind de un indice exprimabil

printr-un numar intreg sintaxa este:

FOR Indice = StartValue TO StopValue STEP PasIndice

{Bloc de Instructiuni}

NEXT Indice

In aceasta secventa de instructiuni Indice, StartValue, StopValue si PasIndice sunt numere

intregi (sau variabile care iau valori numere intregi). Ciclul FOR / NEXT poate fi executat in

ordinea crescatoare a indicelui (in acest caz StartValue < StopValue si PasIndice>0) sau in

ordine descrecatoare (StartValue>StopValue si PasIndice < 0).

Tradusa in limbaj comun secventa de instructiuni precedenta poate fi exprimata sub forma:

“Pentru (FOR) valori ale Indicelui incepind cu StartValue pina la StopValue executa pe rind

Blocul de instructiuni. Indicele variaza la fiecare repetare a executiei blocului cu valoarea

PasIndice”.

In executarea secventei de instructiuni, programul atribuie parametrului Indice valoarea

StartValue. Se executa Blocul de Instructiuni, dupa care valoare parametrului Indice este

crescuta cu PasIndice. Daca noua valoare este mai mare decit StopValue atunci se iese din

ciclu. Daca nu ciclul se reia cu noua valoare pentru Indice, s.a.m.d. pina la iesirea din ciclu.

Page 3: VBA-ESENTIAL [Compatibility Mode]

vom exemplifica secventa de instructiuni FOR / NEXT prin evaluarea mediei a n valori

stocate in vectorul X(i), I=1,n:

Suma = 0

For I = 1 TO n

Suma = Suma + X(i)

Next I

Medie = Suma / n

INSTRUCTIUNEA WHILE / WEND

Secventa de instructiuni While / Wend, avind sintaxa:Secventa de instructiuni While / Wend, avind sintaxa:

While Conditie

{Bloc de Instructiuni}

Wend

unde Conditie este o expresie a carei evaluare conduce la o valoare logica de tip

“Adevarat” sau “Fals”

Daca rezultatul evaluarii expresiei inclusa in Conditie este adevarat, atunci se

executa Blocul de instructiuni. Daca rezultatul evaluarii expresiei inclusa in Conditie

este fals se iese din ciclu

Page 4: VBA-ESENTIAL [Compatibility Mode]

INSTRUCTIUNEA DO / LOOP

Secventa de instructiuni DO / LOOP avind una din sintaxele urmatoare:

DO WHILE Conditie

{Bloc de Instructiuni}

LOOP

Sau

DO UNTIL Conditie

{Bloc de Instructiuni}

LOOPLOOP

Executa {Bloc de Instructiuni} atita timp cit (WHILE) sau pina cind (UNTIL) expresia din

Conditie este Adevarata

Page 5: VBA-ESENTIAL [Compatibility Mode]

INSTRUCTIUNEA Select Case

Structura Select Case este o altemativa la If. . . Then. . .Else pentru

executarea selectiva a unui bloc de instructiuni din mai multe blocuri de

instructiuni.

Exemplu:

Select Case

Case 0

Msg = "Nul"

Case 1

Msg = "Impar"

Case 2Case 2

Msg = "Par"

Case Else

Msg = "Out of range"

End Select

Page 6: VBA-ESENTIAL [Compatibility Mode]

Selectarea sheet-ului si celulelor utilizind instructiunea Select.

Selectarea unui sheet se face sub forma:

Sheets(VariabilaText).Select

Aceasta instructiune poate fi tradusa in limbaj obisnuit prin expresia:

Din clasa de obiecte Sheets se selectioneaza sheet-ul al carui nume este VariabilaText.

Sheet-ul selectionat devine activ in cadrul aplicatiei.

Spre exemplu activarea Sheet-ului “Input” se poate face sub una din formele:

A$ = “Input”

Sheets(A$).Select

Sau

Sheets(“Input”).Select

Selectarea unei celule sau grup de celule se face aplicind operatia Select asupra clasei de

obiecte Range actualizata pentru domeniul dorit:

Range(VariabilaText).Select

Page 7: VBA-ESENTIAL [Compatibility Mode]

CITIREA SI SCRIEREA DATELOR IN SHEET-uri

Specificarea numelui sheet-ului din care sau in care se face citirea/scrierea datelor

prin utilizarea comenzii: With, urmata de denumirea acesteia si de End With

With Sheets(“Date”)

……………

End With

Citirea datelor dintr-un sheet -reprezinta alocarea continutului unei celule din

sheet unei variabile din interiorul programului (aplicatiei VBA).

instructiunea :

X = .Cells(1,1).ValueX = .Cells(1,1).Value

transfera continutul din celula A1 variabilei X

Forma generala a instructiunii este:

NumeVariabila = .Cells(Rind, Coloana).Value

NumeVariabila este numele dat variabilei in cadrul subrutinei respective (X, Y, etc.)

Rind este un numar sau variabila numerica care reprezinta rindul celulei care se

citeste. Spre exemplu pentru celula “A1” rindul este 1, pentru celula “C5” rindul

este 5.

Coloana este un numar sau variabila numerica reprezinta numarul de ordine al

coloanei celulei

Page 8: VBA-ESENTIAL [Compatibility Mode]

Transferarea datelor intr-un sheet

continutului variabilei Y se scrie in celula “B3” prin instructiunea:

.Cells(3,2).Value = Y

Forma generala a instructiunii este:

.Cells(Rind, Coloana).Value = NumeVariabila

se atribuie ceea ce se afla in dreapta semnului “=” (valoarea stocata in NumeVariabila) la

ceea ce se afla in stinga (continutul celulei specificate)

Exemplul 1.

With Sheets(“Date”)

X = .Cells(1,1).ValueX = .Cells(1,1).Value

Y = .Cells(4,2).Value

End With

Se atribuie continutului celulei “A1” din Sheet-ul “Date” variabilei X si continutului celulei

B4 variabilei Y

With Sheets(“foaie1”)

.Cells(1,1).Value = X

.Cells(4,2).Value = Y

End With

scrierea valorii variabilelor X si Y in celulele A1 si B4 din Sheet-ul “foaie1”

Page 9: VBA-ESENTIAL [Compatibility Mode]

Exemplul 2.

Atribuirea continutului mai multor celule organizate in coloana unei variabile

de tip vector denumita masuratori

Dim masuratori(19)

With Sheets(“Date”)

For i = 1 TO 19

masuratori(i) = .Cells(i+1 , 2).Value

Next i

End With

In acest exemplu se remarca utilizarea instructiunii de ciclare For: variabila I ia

valori intre 1 si 19. Pentru fiecare valoare I se atribuie variabilei masuratori(i)

continutul celulei avind rindul i+1 (+1 deoarece rindul 1 este destinat capului

de tabel) si coloana 1 (“A”).

Page 10: VBA-ESENTIAL [Compatibility Mode]

Exemplul 3.

Atribuirea continutului mai multor celule organizate in mai multe rinduri si coloane

unei variabile de tip matrice denumita X

Dim X(19,3)

With Sheets(“Date”)

For I = 1 TO 19

For J = 1 TO 3

X(I , J) = .Cells(I+1, J).Value

Next J

Next I

End WithEnd With

Page 11: VBA-ESENTIAL [Compatibility Mode]

Atribuirea continutului mai multor celule organizate in coloana unei variabile de tip

vector . Spre deosebire de Exemplu 2 nu se cunoaste numarul de elemente din coloana

care urmeaza a fi citita. In acest caz citirea se va face crescind numarul de ordine al

rindului citit (i1) atita timp cit (While) continutul celulei corespunzatoare nu este nul

(continutul nul este similar cu variabila text nula: ””)

With Sheets("Date")

i1 = 1

While .Cells(i1+1, 1) <> ""

X(i1) = .Cells(i1+1, 1).ValueX(i1) = .Cells(i1+1, 1).Value

i1 = i1 + 1

Wend

n = i1 - 1

End With

Page 12: VBA-ESENTIAL [Compatibility Mode]

Acelasi algoritm se poate scrie utilizind secventa de instructiuni DO WHILE / LOOP

sub forma:

With Sheets(“Date")

i1 = 1

Do While .Cells(i1+1, 1) <> ""

X(i1) = .Cells(i1+1, 1).Value

i1 = i1 + 1

Loop

n = i1 - 1

End WithEnd With

Page 13: VBA-ESENTIAL [Compatibility Mode]

Range(“A1”).Offset(1, 2)

Range(“C2”).Offset(-1, -2)

Range(“A1”).Offset(0, 0)

MsgBox Worksheets(“Sheet1”).Range(“A1”).Value

Worksheets(“Sheet1”).Range(“A1:C3”).Value = 123

Range(“A13”).Formula = “=SUM(A1:A12)”

Range(“A1:J10”).Value = 99

Range(Cells(1, 1), Cells(10, 10)).Value = 99

Page 14: VBA-ESENTIAL [Compatibility Mode]