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 - VBE i VBA - Objekti, Objects

VBA objekti u Excelu 

Search This Web Site

Adsense sponzor






Range Objekti - VBA u Excelu

Range objekt se nalazi unutar Worksheet objekta, i sastoji se od jedne ćelije ili raspona ćelija na jednom radnom listu. Range objektima u VBA može se pristupati koristeći:

• svojstvo Range objekata Worksheet i Range,
• svojstvo Cells objekata Worksheet i Range,
• svojstvo Offset objekta Range.

Svojstvo Range u VBA za Excel

Svojstvo Range vraća objekt Range i referencira se na slijedeći način:

Objekt.Range(Raspon)

Raspon može biti jedna ćelija, Raspon ćelija, unija Raspona, presjek Raspona ili definirano ime Raspona.
Evo nekoliko primjera korištenja ovog svojstva:

Worksheets(1).Range("C2").Value = 1
Worksheets(1).Range("C2:D7").Value = 2
ActiveSheet.Range("C2:D7,F4,H8").Value = 3
ActiveSheet.Range("C2:D7 B3:E5").Value = 4
ActiveSheet.Range("MojRaspon").Value = 5

Prva dva primjera su, nadamo se, jasna.
U trećem primjeru imamo Raspon koji predstavlja uniju Raspona C2:D7 i F4:H8. Dakle, unija Raspona formira se razdvajajući Raspone zarezima.
U četvrtom primjeru imamo presjek Raspona C2:D7 i B3:E5. Kod presjeka Raspona, u ovom slučaju Raspone razdvajamo
blanko znakom (space).

U petom primjeru pristupamo Rasponu čije je ime "MojRaspon", koji je definiran u okviru aktivnog radnog lista.

Ovo su bili primjeri korištenja osobine Range na Worksheet objektima. Kao što je rečeno, ovo Svojstvo se može koristiti i sa Range objektima.
Na primjer, neredbenim kodom

ActiveCell.Range("C3") = 25.5

se pristupa ćeliji koja se nalazi u odnosu na aktivnu ćeliju isto kao što se ćelija C3 nalazi u odnosu na ćeliju A1. Dakle, C3 predstavlja relativnu adresu ćeliju u odnosu na aktivnu ćeliju. U prethodnoj naredbi izostavili smo podrazumijevano svojstvo Value. Pored ovog načina relativnog pristupa ćelijama, postoji još jedan, jednostavniji, način relativnog pristupa, korištenjem osobine Offset.

Pogledajte neka svojstva objekta Range

Svojstvo  Opis 
Address  Vraća adresa, u vidu teksta, specificiranog raspona.
Row  Vraća broj prve vrste specificiranog raspona.
Na primjer, Range("C4:G7").Row vraća broj 4.
Column  Vraća broj prve kolone specificiranog raspona.
Na primjer, Range("C4:G7").Column vraća broj 3.
Count  Vraća broj ćelija specifiranog raspona.
Na primjer, Range("C4:G7").Count vraća broj 20.
CurrentRegion  Vraća Range objekt koji predstavlja područje u kom se nalazi specificiran raspon. Područje je pravokutni blok ćelija okružen sa najmanje jednom praznom vrstom iznad i ispod, i najmanje jednim praznim stupcem sa lijeve i desne strane. Ovo svojstvo vrlo je korisno kad ne znamo veličinu raspona sa kojim radimo, ili kad se taj raspon mijenja dodajući ili oduzimajući red i stupce.
Formula  Vraća ili upisuje formulu u specificirani raspon.
Comment  Vraća Comment objekt. Kolekcija Comments sadrži sve komentare tekućeg radnog lista.
Na primjer, Range("C4").Comment.Text "Novi komentar" će promijeniti komentar u ćeliji C4. Ukoliko komentar ne postoji, VBA će javiti grešku.

Svojstvo Cells u VBA za Excel

Kao i svojstvo Range, svojstva Cells imaju Worksheet i Range objekti. Postoje tri sintakse korištenja ove osobine:

Objekt.Cells(rowIndex,columnIndex)
Objekt.Cells(rowIndex)
Objekt.Cells

Najjednostavniji i najlogičniji je prvi način korištenja. Na primjer, naredbom

Worksheets("Sheet1").Cells(3,5) = 51

pristupa se ćeliji u sjecištu trećeg reda i petog stupca, tj. ćeliji E3, i u nju se upisuje broj 51. S obzirom da radni list u Excel 2003 ima 65536 redova i 256 stupaca, indeks reda u svojstvu Cells je broj između 1 i 65536, dok je broj stupca između 1 i 256. Dakle Cells(1,1) odgovara ćeliji A1. Cells(row, column) => prvi red prvi stupac

U drugom načinu korištenja ovog svojstva navodi se samo broj reda, i u tom slučaju se ćelijama opsega pristupa kao da je raspon razvijen u niz, red po red.

Na primjer, naredbom:

Worksheets("Sheet1").Cells(8) = 11
Worksheets("Sheet1").Cells(258) = 12

pristupa se  ćelijama H1 i B2. Zašto je ovo ovako. Da bi bolje razumjeli malo ću pojasniti. Ako krenemo od ćelije A1 u desno osma (8) ćelija je H1, a do kraja je 256 ćelija+ novi red dvije ćelije =258 (256+2=258) => B2 ćelija i u njoj će biti rezultat 12.

Posljednjoj ćeliji radnog lista se pristupa sa  Worksheets("Sheet1").Cells(16777216)

Treća sintaksa, bez navođenja broja reda i stupaca, vraća sve ćelije referencirane radne knjige. Prethodne dvije sintakse su vraćale jednu ćeliju.

Na primjer, naredba ActiveSheet.Cells = 45 u čitav radni list upisuje broj 45,

dok naredba, ActiveSheet.Cells.ClearContents briše sadržaj čitavog radnog lista.

Kada se svojstvo Cells koristi sa Range objektima, imamo sličnu situaciju kao kod svojstva Range tj. argumenti u zagradi će definirati relativnu adresu ćelije u odnosu na aktivnu ćeliju, koja se nalazi u gornjem lijevom kutu referenciranog raspona.
Na primjer, ako je aktivna ćelije B5, naredbom

ActiveCell.Cells(1,1) = 5
ActiveCell.Cells(
2,2) = 6

mijenjat ćemo sadržaj ćelijama B5 (aktivna) i C6. Kada se izostavi broj stupca, onda se ćelijama raspona pristupa kao da je raspon razvijen u niz, red po red.

Na primjer, naredba Range("A1:D5").Cells(5) vraća ćeliju A2. Ovim zapisom nismo ograničeni samo na pristup ćelijama iz raspona A1:D5, već možemo pristupati i ćelijama tog raspona.

Na primer, naredbom Range("A1:D5").Cells(22) bismo referencirali ćeliju B6.

Ukoliko želimo da zaobiđemo selektirani raspon, ćeliju po ćeliju, i da izvršimo određenu operaciju (recimo, upis slučajnog broja koji vraća funkcija Rnd) sa svakom ćelijom, to možemo efikasno uraditi koristeći dvije petlje i svojstvo Cells na slijedeći način:

Dim I As Integer, J As Integer
For I = 1 To Selection.Rows.Count
For J = 1 To Selection.Columns.Count
Selection.Cells(I, J) = Rnd
Next
Next

Broj redova i stupaca predmetnog raspona dobiva se pomoću svojstva Count objekta Range. Raspon se može zaobići i koristeći svojstvo Cells sa jednim argumentom, što je dato ispod.

Dim I As Integer
For I = 1 To Selection.Count
Selection.Cells(I) = Rnd
Next

Svojstvo Offset u VBA za Excel

Kao i svojstva Range i Cells, svojstvo Offset vraća Range objekt, ali za razliku od ova dva svojstva, Offset se odnosi samo na Range objekte i nijedne više.

Sintaksa ovog svojstva je:

Objekt.Offset(rowOffset,columnOffset)

Argumenti ovog svojstva definiraju relativni pomak (offset) ćelije u odnosu na gornji lijevi kut raspona. Ovi argumenti mogu biti pozitivni (krećemo se dole ili desno), negativni (krećemo se gore ili lijevo), ili nula.

Na primjer, ukoliko je aktivna ćelija C3, sa naredbama

ActiveCell.Offset(1,0).Value = 5
ActiveCell.Offset(-1,0).Value = 6

mijenjamo vrijednost ćelijama C4 i C2. Ukoliko je aktivna ćelija A1, onda argumenti ne mogu biti negativni, tj. dogodit će se greška pri pokušaju unosa negativnog pomaka, jer odgovarajuće ćelije ne postoje. Offset(0,0) odgovara aktivnoj ćeliji. (primjer uz dozvolu prenesen iz materijala sa predavanja prof. S.Đukanović)

Adsense sponzor




Adsense sponzor




Adsense sponzor



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