Svaki dijaloški okvir programa Excel koji kreirate u VBA pohranjen je u vlastitom objektu UserForm — jedan dijaloški okvir po korisničkom obrascu. Izrađujete i pristupate ovim korisničkim obrascima u Visual Basic Editoru.
Umetanje novog korisničkog obrasca
Umetnite objekt UserForm slijedeći ove korake:
Aktivirajte VBE pritiskom na Alt+F11.
Odaberite radnu knjigu koja će držati korisnički obrazac u prozoru projekta.
Odaberite Umetanje → Korisnički obrazac.
VBE umeće novi objekt UserForm, koji sadrži prazan dijaloški okvir.
Ovdje je korisnički obrazac — prazan dijaloški okvir. Vaš je posao, ako ga odlučite prihvatiti, dodati neke kontrole ovom korisničkom obrascu.
Novi objekt UserForm.
Dodavanje kontrola u korisnički obrazac
Kada aktivirate korisnički obrazac, VBE prikazuje Toolbox u plutajućem prozoru. Koristite alate u Toolboxu za dodavanje kontrola u svoj korisnički obrazac. Ako se iz nekog razloga Alatni okvir ne pojavi kada aktivirate svoj korisnički obrazac, odaberite Prikaz → Kutija s alatima.
Da biste dodali kontrolu, samo kliknite željenu kontrolu u Alatnom okviru i povucite je u dijaloški okvir kako biste stvorili kontrolu. Nakon što dodate kontrolu, možete je premjestiti i promijeniti veličinu pomoću standardnih tehnika.
Ovdje je popis različitih alata, kao i njihove mogućnosti.
Kontrolirati |
Što to radi |
Označiti |
Prikazuje tekst |
Tekstualni okvir |
Omogućuje korisniku unos teksta |
ComboBox |
Prikazuje padajući popis |
ListBox |
Prikazuje popis stavki |
Potvrdni okvir |
Pruža opcije kao što su uključeno/isključeno ili da/ne |
OptionButton |
Omogućuje korisniku odabir jedne od nekoliko opcija; koriste se u
skupinama od dvije ili više |
ToggleButton |
Omogućuje korisniku da uključi ili isključi gumb |
Okvir |
Sadrži druge kontrole |
Naredbeni gumb |
Gumb na koji se može kliknuti |
TabStrip |
Prikazuje kartice |
Višestranica |
Spremnik s karticama za druge objekte |
Traka za pomicanje |
Omogućuje korisniku da povuče traku za postavljanje postavke |
SpinButton |
Omogućuje korisniku da klikne gumb za promjenu vrijednosti |
Slika |
Sadrži sliku |
RefEdit |
Omogućuje korisniku odabir raspona |
Promjena svojstava za kontrolu UserForm
Svaka kontrola koju dodate u korisnički obrazac ima svojstva koja određuju kako će kontrola izgledati ili se ponašati. Osim toga, sam korisnički obrazac ima svoj vlastiti skup svojstava. Ova svojstva možete promijeniti pomoću prozora svojstava prikladnog naziva. Ovo prikazuje prozor Svojstva kada je odabrana kontrola CommandButton.
Koristite prozore Svojstva za promjenu svojstava kontrola UserForm.
Prozor Svojstva pojavljuje se kada pritisnete F4, a svojstva prikazana u ovom prozoru ovise o tome što je odabrano. Ako odaberete drugu kontrolu, svojstva se mijenjaju u ona prikladna za tu kontrolu. Da biste sakrili prozor Svojstva i sklonili ga s puta, kliknite gumb Zatvori u njegovoj naslovnoj traci. Pritiskom na F4 uvijek se vraća kad vam zatreba.
Svojstva za kontrole uključuju sljedeće:
-
Ime
-
Širina
-
Visina
-
Vrijednost
-
Naslov
Svaka kontrola ima svoj vlastiti skup svojstava (iako mnoge kontrole imaju neka zajednička svojstva). Da biste promijenili svojstvo pomoću prozora Svojstva, slijedite ove korake:
Provjerite je li u korisničkom obrascu odabrana ispravna kontrola.
Provjerite je li prozor Svojstva vidljiv.
U prozoru Svojstva kliknite svojstvo koje želite promijeniti.
Učinite promjenu u desnom dijelu prozora Svojstva.
Ako odaberete sam korisnički obrazac (ne kontrolu na korisničkom obrascu), možete koristiti prozor Svojstva za podešavanje svojstava korisničkog obrasca.
Pregledavanje prozora UserForm Code
Svaki objekt UserForm ima modul Code koji sadrži VBA kod (procedure za rukovanje događajima) koji se izvršava kada korisnik radi s dijaloškim okvirom. Za prikaz modula Code pritisnite F7. Prozor koda je prazan dok ne dodate neke postupke. Pritisnite Shift+F7 za povratak u dijaloški okvir.
Evo još jednog načina za prebacivanje između prozora koda i prikaza korisničkog obrasca: Koristite gumbe View Code i View Object u naslovnoj traci prozora projekta. Ili desnom tipkom miša kliknite korisnički obrazac i odaberite Prikaži kod. Ako pregledavate kod, dvaput kliknite naziv korisničkog obrasca u prozoru projekta da biste se vratili na korisnički obrazac.
Prikaz korisničkog obrasca
Korisnički obrazac prikazujete korištenjem metode Show UserForm u VBA proceduri.
Makronaredba koja prikazuje dijaloški okvir mora biti u VBA modulu — ne u prozoru koda za korisnički obrazac.
Sljedeći postupak prikazuje dijaloški okvir pod nazivom UserForm1:
Sub ShowDialogBox()
UserForm1.Show
' Ostale izjave mogu ići ovdje
Kraj Sub
Kada Excel prikaže dijaloški okvir, makronaredba ShowDialogBox se zaustavlja dok korisnik ne zatvori dijaloški okvir. Tada VBA izvršava sve preostale izraze u proceduri. Većinu vremena nećete imati više koda u proceduri. Kao što ćete kasnije vidjeti, svoje procedure za rukovanje događajima stavljate u prozor koda za korisnički obrazac. Ovi postupci počinju kada korisnik radi s kontrolama na korisničkom obrascu.
Korištenje informacija iz korisničkog obrasca
VBE daje naziv za svaku kontrolu koju dodate u korisnički obrazac. Ime kontrole odgovara njenom svojstvu Name. Koristite ovaj naziv za označavanje određene kontrole u vašem kodu. Na primjer, ako dodate kontrolu CheckBox u korisnički obrazac pod nazivom UserForm1, kontrola CheckBox prema zadanim postavkama nosi naziv CheckBox1. Možete koristiti okvir Svojstva kako biste ovu kontrolu prikazali s kvačicom. Ili možete napisati kod da to učinite:
UserForm1.CheckBox1.Value = Istina
Većinu vremena pišete kod za korisnički obrazac u modulu koda korisničkog obrasca. Ako je to slučaj, možete izostaviti kvalifikator objekta UserForm i napisati izjavu ovako:
Potvrdni okvir1.Vrijednost = Istina
Vaš VBA kod također može provjeriti različita svojstva kontrola i poduzeti odgovarajuće radnje. Sljedeća naredba izvršava makronaredbu pod nazivom PrintReport ako je potvrdni okvir (nazvan CheckBox1) označen:
Ako je CheckBox1.Value = True, onda pozovite PrintReport
Obično je dobra ideja promijeniti zadani naziv koji je VBE dao vašim kontrolama u nešto značajnije.