Upload
valentin-vali
View
23
Download
3
Embed Size (px)
Citation preview
INSTRUCTIUNI DE BAZA IN
VISUAL BASIC
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.
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
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
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
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
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
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”
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”).
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
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
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
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