Informatica Aplicata I
Laborator 10
Contents
Exercitii 1
Exerciiul 1 (subrutine si functii generale) 1
Exerciiul 2 (procedura de eveniment) 2
Exerciiul 3 (procedura de eveniment) 4
Exerciiul 4 (procedura de eveniment) 5
Exercitii
Exerciiul 1 (subrutine si functii generale)
Realizati o functie VBA care sa calculeze aria cercului.
Rezolvare
1. Se deschide editorul VB in Excel (ALT+F11)
2. Se introduce un nou modul: Insert -> Module
3. Click pe modulul inserat -> in fereastra Properties (daca nu este afisata, fereastra se activeaza
din View -> Properties Window) se introduce denumirea modulului Ex1 in campul Name
Figure 1
4. In spatiul de editare al modulului se introduc
a. OPTION EXPLICIT
b. urmatoarele proceduri
1
Informatica Aplicata I
Functie
Function arie(ByVal raza As Single) As Single Definim functia arie cu parametrul
formal raza
Const PI As Single = 3.14
If raza < 0 Then
MsgBox "Raza trebuie sa fie un numar real pozitiv!"
Exit Function 'Termina procedura daca raza este un numar negativ
End If
arie = PI * raza ^ 2 'Calcul arie cerc
End Function
Subrutina
Sub CalculArieCerc()
Dim r As Single
r = 3
' apel functie
Dim arieCerc As Single Declaram variabila arieCerc
arieCerc = arie(r) Apelam functia arie cu parametrul efectiv r
Worksheets("ArieCerc").Range("A1").Value = "Aria cercului de raza " & r & "
este " & arieCerc
End Sub
5. Se executa modulul: Run -> Run Sub/UserForm -> Run
Figure 2
Exerciiul 2 (procedura de eveniment)
Scrieti o aplicatie care calculeaza si afiseaza costul unei facturi de telefon mobil. Se vor prelua din
foaia de calcul Sheet2 (redenumiti in Factura) urmatoarele date: valoare abonament, valoare
convorbiri, curs euro (lei). Se tine cont de TVA = 24%.
2
Informatica Aplicata I
Rezolvare
1. redenumiti foaia de calcul Sheet2 in Factura
2. realizati urmatoarea lista
Figure 3
3. introduceti un control de tip CommandButton
a. executati View > Toolbars > Control ToolBox
b. selectati controlul de tip Active X -> CommandButton
c. reveniti in foaia de calcul si trasati cu mouse-ul un dreptunghi; butonul va fi afisat pe
foaia de calcul
Figure 4
d. click dreapta pe buton -> Properties; se va deschide fereastra Properties; modificati
valoarea proprietatilor
i. Name: bFactura
ii. Caption: Factura
e. urmatorul pas este sa scriem o procedura de eveniment asociata evenimentului
Click al butonului bFactura; pentru a deschide editorul de cod fie se executa dublu
click pe buton, fie se executa click dreapta si se alege View Code
f. se scrie urmatorul cod in procedura bFactura_Click()
3
Informatica Aplicata I
Private Sub bFactura_Click()
On Error GoTo err daca apare o eroare in executia procedurii,se va executa
codul de sub eticheta err
Dim vAb As Single, vConv As Single, vCurs As Single, vTVA As Single, factura
As Single
vAb = CSng(Worksheets("Factura").Range("B1").Value)
vConv = CSng(Worksheets("Factura").Range("B2").Value)
vCurs = CSng(Worksheets("Factura").Range("B3").Value)
vTVA = CSng(Worksheets("Factura").Range("B4").Value)
If vAb <= 0 Or vConv < 0 Or vCurs <= 0 Or vTVA <= 0 Then
MsgBox "Eroare la datele de intrare. Introduceti nr>=0!"
Exit Sub
End If
factura = (vAb + vConv) * vCurs * (1 + vTVA)
Worksheets("Factura").Range("B5").Value = factura
Exit Sub
err:
MsgBox [Link]
End Sub
g. se revine in foaia de calcul, se iese din modul de design al butonului si se executa
click pe buton
Figure 5
Exerciiul 3 (procedura de eveniment)
Sa se realizeze o aplicatie VBA care sa permita preluarea a doua date din foaia de calcul,
temperatura Celsius, respectv Fahrenheit, si transformarea lor astfel:
a. temperatura Celsius in cea echivalenta Fahrenheit, dupa formula: F = 9/5*C+32
b. temperatura Fahrenheit in cea echivalenta Celsius dupa formula: C = 5/9*(F-32).
Figure 6
4
Informatica Aplicata I
Rezolvare
1. Redenumiti Sheet3 in Temperaturi.
2. Implementati o regula de validare in celula A2, care sa permita alegerea tipului de
temperatura pentru care se va face conversia.
3. introduceti un control de tip CommandButton si denumiti-l bConversie
4. Editati procedura de eveniment a butonului bConversie prin care rezultatul conversiei va fi
afisat in celula E2, iar in celula F2 se va afisa temperatura in care s-a realizat conversia.
Private Sub bConversie_Click()
On Error GoTo err
Dim temp As Single, rez As Single
Dim tempStr As String
tempStr = CStr(Worksheets("Temperaturi").Range("A2").Value)
temp = CSng(Worksheets("Temperaturi").Range("B2").Value)
If UCase(tempStr) = UCase("FAHRENHEIT") Then
rez = 5 / 9 * (temp - 32)
Worksheets("Temperaturi").Range("E2").Value = rez
Worksheets("Temperaturi").Range("F2").Value = "Celsius"
Else
rez = 9 / 5 * temp + 32
Worksheets("Temperaturi").Range("E2").Value = rez
Worksheets("Temperaturi").Range("F2").Value = "Fahrenheit"
End If
Exit Sub
err:
MsgBox [Link]
End Sub
Figure 7
Exerciiul 4 (procedura de eveniment)
Realizati o aplicatie prin care sa calculati salariul net, aplicand urmatoarele formule:
a. Salariu baza=(Salariu de baza + Vechime)* Zile_Lucratoare
b. Pensie= 9.5% * Salariu baza
c. Somaj=1% * Salariu baza
d. Sanatate=6.5% * Salariu baza
e. total Deduceri=Pensie + Somaj + Sanatate
f. Venit=Salariu total Deduceri
5
Informatica Aplicata I
g. Impozit= 16% * Venit
h. Salariu net=Venit Impozit
Se vor prelua dintr-o foaie de calcul urmatoarele date: salariul de baza, data angajarii si zilele
lucratoare (in procente. Ex. 100%).
Rezolvare
1. redenumiti foaia de calcul Sheet4 in Salariu
2. realizati lista din Figure 8 si inserati un control de tip buton cu denumirea bSalariu
Figure 8
3. editati procedura de eveniment asociata evenimentului Click al butonului bSalariu
Figure 9
a. declarati variabilele necesare rezolvarii problemei
b. preluati din foaia de calcul valorile variabilelor salariuBaza, dataAngajare si
zileLucratoare
c. implementati formulele din enuntul problemei
i. vechimea se va calcula astfel:
vechime = Year(Now) Year(dataAngajare)
d. afisati salariul net in foaia de calcul