IZBORNIK HOME FORUM ACCESS EXCEL WORD  
 

HOME

9

Objekti - Objects

9.1 VBA objekti u Excelu
9.2 Referenciranje objekata
9.3 Dodjela objekta varijabli
9.4 Aktivni objekti
9.5 Range objekti
9.6 Rad sa objektima i kolekcijama
9.7 With-End With konstrukcija
9.8 For Each-Next petlja
   
 

MICROSOFT EXCEL 2003 - VBA MACRO kod u Excelu - VBA i Makronaredbe u Excelu - VBA za početnike

Hijerarhija VBA u EXCELU

Search This Web Site

Adsense sponzor






Collections, Objects, Methods, Properties, Events in VBA - Excel

Ovdje na početku tutorijala dat ću neke osnovne naznake kako je organiziran VBA u Excelu i link na većinu VBA primjera pojedine Reference u VBA

Odmah da podsjetim, jer sam rekao da neću prevoditi neke riječi i pojmove ali evo za one koji nisu pogledali Uvod.

Workbooks => Radne knjige (radna bilježnica, sveska)
Workbook => Radna knjiga (radna bilježnica, sveska)
Worksheets => Radni listovi
Worksheet => Radni list
Sheet => List (Sheet1, Sheet2 ili List1, List2 ...)
Range => Raspon ćelija (opseg)
Chart => Mapa

Makronaredbe u Excelu se koriste za automatizaciju često ponavljanih zadataka (radnji) ili pak ne mora biti tako, može i za jedan jedini zadatak koji je potrebno odraditi u nekom dijelu naših proračuna u Excel tablici. Makronaredbu možete snimiti a možete je i napisati i umetnuti u Code Window u VBE (Visual Basic Editor).

VBA radi sa objektima same aplikacije (Application). Na primjer, objekti kod Excel-a mogu biti radna bilježnica ili radna knjiga (workbook), radni list (worksheet), opseg (range), mapa (chart) itd.

Klase objekta su hijerarhijski uređene. To znači da objekti mogu služiti kao kontejneri za druge objekte. Na primjer, Excel je objekt Application i on sadrži druge objekte, kao što su Workbook ili CommandBar. Objekt Workbook sadrži objekte Worksheet i Chart. Objekt Worksheet sadrži objekte Range, PivotTable itd. Okvire u bojama shvatite kao "kontejner"

Hijerarhija objekata u VBA za Excel

Objects (objekti) u VBA

Objekt je posebna vrsta varijable koja sadrži podatke i kod. Collection (kolekcija) je grupa objekta iste klase. Najčešće upotrebljavani objekti u Excel VBA prilikom programiranja su radne knjige (Workbook), radni list (Worksheet), list (Sheet), i raspon (Range).

Workbooks je kolekcija (collection) svih objekta radnih knjiga (Workbook).
Worksheets je kolekcija (collection) svih objekta Worksheet.
Workbooks objekt predstavlja Workbook,
Worksheets objekt predstavlja Worksheet,
Worksheet objekt predstavlja Sheet ili chartsheet,
Range objekt predstavlja Range (raspon ćelija).


Kolekcije (Collections) u VBA

Slični objekti formiraju kolekciju. Na primjer, kolekcija Worksheet se sastoji od svih radnih listova u dotičnoj Workbook. Kolekcije za sebe predstavljaju objekte. Referenciranje određenog objekta u hijerarhiji se vrši korištenjem operatora točka (.) koji služi kao separator između kontejnera i člana.

Neki osnovni primjeri i pojašnjenje dijlelova linije koda u VBA za Excel

Na primjer, referenciranje Workbook => Book1.xls vrši se na slijedeći način:

Application.Workbooks("Book1.xls")

Referenciranje lista Sheet1 - Workbook Book1.xls se vrši kao

Application.Workbooks("Book1.xls").Worksheets("Sheet1")

Slično, referenciranje ćelije A1 radnog lista Sheet1 se vrši kao

Application.Workbooks("Book1.xls").Worksheets("Sheet1").Range("A1")

Na sreću, ne mora se koristiti ovoliki zapis svaki put za dotičnu ćeliju. Ukoliko znamo da je Sheet1 aktivan radni list aktivne Workbook Book1, gornji zapis se može reducirati na

Range("A1")

Objekti imaju osobine. Na primjer, osobine opsega (raspona ćelija) kao objekta mogu biti Value i Type. Pomoću VBA se mogu mijenjati osobine objekta. Referenciranje osobina se vrši kombiniranjem objekta i određene osobine uz pomoć operatora tačka. Na primjer, osobina Value ćelije A1 Workbook Sheet1 se može referencirati sa

Worksheets("Sheet1").Range("A1").Value

Ovako dobivena vrijednost se kasnije može dodijeliti nekoj VBA varijabli (promijenjivoj). Objekti imaju metode. Metoda je akcija koja se izvršava nad objektom. Na primjer, jedna od metoda objekta Range je ClearContents, pomoću koje se briše sadržaj opsega. Pozivanje metode, također se vrši pomoću operatora točka, koji razdvaja objekt i metodu. U prethodnom slučaju bi imali

Range("A1").ClearContents

Kao i svi moderni programski jezici, VBA posjeduje složene tipove podataka, instrukcije za kontrolu toka programa, tj. naredbe uvjetnog izvršavanja i cikluse, itd. O VBA sintaksi će biti najviše riječi u dijelu sa Excelom. Sintaksa se, naravno, ne mijenja u zavisnosti od aplikacije.


Ovo su neki primjeri objekata u Excelu, njihovih svojstava i metoda

Application Object
Properties: Workbooks, ActiveWorkbook, ActiveSheet, Caption, Charts, DisplayAlerts, CutCopyMode…
Methods: CheckSpelling, Run, Quit…

Workbook Object
Properties: Worksheets, ActiveSheet, ActiveChart, Name, Path, FullName, FileFormat…
Methods: Activate, Save, SaveAs, Close, Protect…

Worksheet Object
Properties: Name, Index, Cells, Columns, Rows, Type, Visible…
Methods: Activate, Select, Calculate, Copy, Delete, Move, PrintOut, Protect, Unprotect…

Range Object
Properties: Count, Columns, Rows, Cells, Value…
Methods: Activate, Select, Find, Copy, ClearContents…

Za više detalja pogledajte linkove ovog tutorijala gdje su isti prikazani u tablicama.


Slika ispod prikazuje aktivnu Workbook - Book1.xls, selektirane Range C2 i C7:C11 kao i aktivni radni list Worksheet - Sheet1. Inače ako želite promijeniti boju naziva Sheet1 - Tab (jezičak ili jahač) tada kliknite na njega desnom tipkom miša (DTM) pa izaberite Tab Color

Workbook u istoj Excel datoteci. Workbooks collection (kolekcija) sadrži sve trenutno otvorene Workbook. U otvorenoj Workbook (Book1) mora postojati barem jedan Woorksheet => Sheet1. U VBA, Woorksheet može biti referenciran linijom koda poput ovog ispod. Ovaj kod se odnosi na prvi Radni list (Worksheet) u kolekciji (collection).

Worksheets("Sheet1")

PAŽNJA: Worksheets(1) nije isto što i Worksheets("Sheet1").

Sheets je kolekcija (collection) svih Worksheets i Chart sheets. Sheet može biti prezentiran kao Worksheet.
Sheets(1) je prvi radni list u radnoj knjizi (workbook).

Za referenciranje objekata sa istim imenom morate specificirati pojedini objekt.

Workbooks("Book1").Worksheets("Sheet1")
Workbooks("Book2").Worksheets("Sheet1")


Range Object i Cells (svojstva ćelija)

Range predstavlja: ćelija, redak, stupac (kolona), raspon susjednih ćelija tzv. blok.
U slijedećem primjeru pogledajte kako se insertira pomoću VBA linije koda određeni pojam/podatak/vrijednost u neki raspon ćelija na određenom Sheetu

Slijedeći primjer insertira tekst "IvanC" u raspon ćelija A1:B5, na Sheet2.

Ovaj primjer možete isprobati (kasnije) u prozoru Immediate u VBE (kada naučite pristupiti VBE (Visual Basic Editoru) u Excelu

Worksheets("Sheet2").Range("A1:B5") = "IvanC"

Range Object i Cells objects in Excel VBA

Ovaj VBA kod linije mogli smo pisati također kao Worksheets("Sheet2").Range("A1", "B5") = "IvanC".
Ovdje uočite razliku između pisanog Range (raspona ćelija) u prvom primjeru i drugom primjeru.

Dakle ovo Range("A1:B5") je isto što i ovo Range("A1", "B5")
Ovdje je raspon unutar NAVODNIKA a ovaj drugi primjer je dvije ćelije PRVA POČETNA i ZAVRŠNA ćelija također unutar navodnika ali odvojene zarezom  ("A1:B5") = ("A1", "B5")

No zato sada obratite pažnju na ovaj VBA kod. Ovaj kod prikazuje kako se mogu specificirati više ODVOJENIH ćelija za unos podatka

Worksheets("Sheet2").Range("A1, A3, A5, B7") = "IvanC"

Uočite da su ćelije odvojene ZAREZOM a sve se nalazi unutar NAVODNIKA za razliku od prethodnog VBA koda gdje je raspon ili svaka ćelija za sebe unutar navodnika pa su ti navodnici odvojeni zarezom. Dakle, zaključak je da se određeni raspon podataka mora nalaziti unutar Navodnika a ti rasponi se odvajaju zarezom.
 

CELLS PROPERTY


Range objekt kao svojstvo ćelije (Cells property). Ovo svojstvo je upotrijebljeno u svakom VBA projektu na ovoj web stranici. Obratite pažnju da svojstvo ćelije (Cells) ima dva parametra.

Cells(index) ili Cells(row, column) => Dakle CELLS(1, 1) => označava odredište "red 1" i "stupac 1" a to je ćelija A1

Slijedeće tri linije VBA koda su za primjer

ActiveSheet.Range.Cells(1,1)
Range.Cells(1,1)
Cells(1,1)


Slijedeće linije VBA koda vraćaju rezultate kako slijedi a daju rezultat upisa 123 u ćeliju A1

Range("A1") = 123 je isto što i Cells(1,1) = 123

Slijedeće linija VBA koda insertiraju tekst "IvanC" ćeliju C1.

Cells(3) = "IvanC"  => Stupac C podrazumijeva red prvi =ćelija C1
Cells(1,3)= "IvanC" => red 1, stupac 3 =ćelija C1
Range("C1") = "IvanC" => ćelija C1

Dok slijedeća linija VBA koda insertira "IvanC" on ćeliju B3
Uočite kako Excel redom broji ćelije i kako pronalazi ćeliju broj 11 u rasponu ćelija B1:F5 (obratite pažnju na ćelije u kojima su brojevi sive boje)

Range("B1:F5").cells(11) = "IvanC"

CELLS PROPERTY in Excel VBA

 

Adsense sponzor




U ovom primjeru uočite VBA proceduru koja ispisuje podatke u rasponu (Range) A1:D4

Sub CellsExample()
For i = 1 To 4
For j = 1 To 4
Cells(i, j) = "Row " & i & " Col " & j
Next j
Next i
End Sub

Dok ova procedura ispisuje u navedene ćelije kao na slici ispod (C3:G7)

Sub CellsExample()
For i = 3 To 7
For j = 3 To 7
Cells(i, j) = "Row " & i & " Col " & j
Next j
Next i
End Sub

OFFSET kao dio Range objekta

OFFSET funkcija u Excelu pomjera se od selektirane ćelije po redovima i stupcima. Taj pomak može ići u MINUS od selektirane ćelije (Gore i Lijevo) ili u PLUS od selektirane ćelije (Dolje i Desno)

Ako selektiramo ćeliju B3 i aktiviramo ovu naredbu u Immediate Window tada će nam rezultat biti broj 5 u ćeliji B4

ActiveCell.Offset(1,0) = 5

Što radi ova linija VBA koda? Ona pravi pomak od selektirane ćelije (B3) 1 red i 0 column, što znači da joj se rezultat treba prikazati u ćeliji B4.
Dok ovaj kod ActiveCell.Offset(1,1) = 5 daje rezultat u C4

OFFSET kao dio Range objekta u Excel VBA


Ako selektiramo ćeliju B3 i aktiviramo ovu naredbu u Immediate Window tada će nam rezultat biti broj 5 u ćeliji C3

ActiveCell.Offset(0,1) = 5

Što radi ova linija VBA koda? Ona pravi pomak od selektirane ćelije (B3)  0 red i 1 column, što znači da joj se rezultat treba prikazati desno u ćeliji C3.
Dok ovaj kod ActiveCell.Offset(0,2) = 5 daje rezultat u D3


Ako selektiramo ćeliju D3 i aktiviramo ovu naredbu u Immediate Window tada će nam rezultat biti broj 5 u ćeliji A3

ActiveCell.Offset(0,-3) = 5

Što radi ova linija VBA koda? Ona pravi pomak od selektirane ćelije (D3)  0 red i -3 column, što znači da joj se rezultat treba prikazati lijevo (u minus od selektirane ćelije) u ćeliji A3.
Dok ovaj kod ActiveCell.Offset(3,-3) = 5 daje rezultat u A6.
Dok ovaj kod ActiveCell.Offset(-2,-3) = 5 daje rezultat u A1.


Adsense sponzor



Ova web stranica koristi COOKIES - COPYRIGHT - 2010-2017 - IvanC - ic.ims.hr