birotică profesională - asebiroticaprofesionala.ase.ro/selif/b/bpcursul12 - vba.pdfmediul de...

28
Birotică Profesională Cursul 12

Upload: others

Post on 21-Feb-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Birotică Profesională

Cursul 12

Page 2: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Sumar

Visual Basic for Applications (VBA)

Tipuri de date

Structuri de control

Funcţii si proceduri

Obiecte si colecţii

Page 3: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

VBA

Mediu de programare destinat in

special realizării de macro-uri

Macrocomandă: secvenţă de

instrucţiuni obţinută prin înregistrarea

unui set de acţiuni specifice unei

aplicaţii in vederea execuţiei ulterioare

Limbaj de programare: Visual Basic

Page 4: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Mediul de dezvoltare

Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin combinația de taste ALT+F11

Prin butonul Visual Basic din selectorul Developer (selectorul se activeaza din optiunile aplicatiei, categoria Popular)

Module Conțin codul VBA grupat in subprograme si

declarații

Sint incluse in fișierele asociate aplicațiilor Office (nu sint salvate in fișiere distincte)

Page 5: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Tipuri de date

Boolean

Byte

Currency

Date

Double

Integer

Long

Single

String

Variant

Page 6: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Variabile

Dim NumeVariabila

Dim NumeVariabila As Tip

Dim MasivUnidimensional(dim-1)

as Tip

Option Explicit

Option Base

Page 7: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Variabile

Dim i as Integer

Dim sir as String

Dim vect(9) As Integer

Dim vect2(1 To 10) As Single

Dim rezultat

Dim V(1 to 10, 1 to 12) As Double

Page 8: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Variabile

i = 0

vect(i) = i * i

sir = “test”

V(i, j) = i * j

Page 9: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Constante

Se utilizează Const

Exemplu:

Const PI as Single = 3.14

Const Mesaj as String = "Informare“

Const DataReferinta As Date =

#5/25/2009#

Page 10: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Constante predefinite

la nivelul limbajului Visual Basic

vbOKOnly, vbInformation

la nivelul fiecărui model de

programare (Word, Excel etc.):

wdToggle, xlNormal

Page 11: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Operatori

+, -, *, \, /, ^, Mod Operatori aritmetici

& Concatenare siruri

=, >, <, >=, <=, <> Operatori relationali

And, Or, Xor, Not Operatori logici

Page 12: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Structuri de control

If conditie Then

'instructiuni

Else

'instructiuni

End If

Page 13: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Structuri de control

Select Case expresie

Case v1

'instructiuni

Case v2

'instructiuni

Case Else

'instructiuni

End Select

Page 14: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Structuri de control

For contor = vi To vf [Step

pas]

'instructiuni

[Exit For]

'instructiuni

Next [contor]

Page 15: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Structuri de control

Option Base 1

...

Dim Cheltuieli(12, 4) As Single

Dim i As Byte

Dim j As Byte

For i = 1 To 12

For j = 1 To 4

Cheltuieli(i, j) = 0

Next j

Next i

Page 16: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Structuri de control

While conditie

'instructiuni

Wend

Page 17: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Structuri de control

Do

'instructiuni

[Exit Do]

'instructiuni

Loop [{While | Until}

conditie]

Page 18: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Structuri de control

Do [{While | Until} conditie]

'instructiuni

[Exit Do]

'instructiuni

Loop

Page 19: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Proceduri si funcţii

Sub NumeProcedura (argument1 As Tip1, argument2 As Tip2, ...)

'instructiuni VBA

End Sub

Function NumeFunctie (argument1 As Tip1, argument2 As Tip2, ...) as Tip

'instructiuni VBA

NumeFunctie = valoareReturnata

End Function

Page 20: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Proceduri si funcţii

Parametri prin valoare ByVal (implicit)

Parametri prin referinta ByRef

Page 21: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Apel funcții/proceduri

ProceduraFaraParametri

ProceduraCuParametri p1, ,p3

Rez = FunctieFaraParametri

Rez = FunctieCuParametri(p1, ,p3,

p4)

Page 22: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Funcţii predefinite

Matematice Abs, Atn, Cos, Sin, Exp, Rnd,

Log

Prelucrare

siruri

Asc, Chr, LCase, Len, LTrim,

RTrim, Trim, UCase, Val, Str,

Mid, Left, Right

Data si timp Date, Time, Now, Day, Month,

Year

Financiare Pmt, NPV, IRR, FV

Page 23: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Funcţii pentru

preluarea/afişarea datelor

MsgBox(mesaj , [butoane], [titlu], …)

Returnează codul butonului apăsat

InputBox(mesaj, [titlu],

[text_initial],[pozx], [pozy], …)

Returnează şirul de caractere introdus

de utilizator sau şirul vid în cazul

apăsării butonului Cancel

Page 24: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Funcţii pentru

preluarea/afişarea datelor

i = InputBox("Valoarea", "Transforma

in hexa")

MsgBox Hex$(Val(i)), , "Hexa"

Page 25: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Clase si obiecte

Clasa – tip definit de utilizator

Obiect – variabilă (instanţă) de tip

clasă

Clasa = Proprietăţi + Metode

Evenimente

Page 26: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Colecţii

Multime de obiecte de acelasi tip

Metode: Add

Proprietati: First, Last, Count

Parcurgerea secventiala a obiectelor:

For Each obiect In Colectie

'Prelucrare obiect

Next

Page 27: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Proprietăţi si metode

Obiect.Proprietate

Obiect.Metoda(param)

With Obiect

.Proprietate

.Metoda(param)

End With

Page 28: Birotică Profesională - ASEbiroticaprofesionala.ase.ro/selif/B/BPCursul12 - VBA.pdfMediul de dezvoltare Editorul VBA, accesibil din orice aplicație Microsoft Office 2007/2010: Prin

Bibliografie

P. McFedries – Absolute Beginner's Guide to VBA, Que, 2004

R. Mansfield – Office 2003 Application Development All-in-One Desk Reference For Dummies, Wiley Publishing, Inc., 2004

P. Pocatilu si D. Vespan (coord) – Birotică Profesională, Ed. ASE, 2009

R. Shepherd – Excel VBA Macro Programming, McGraw-Hill/Osborne, 2004