Sunteți pe pagina 1din 6

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 err.Description

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 err.Description

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

S-ar putea să vă placă și