The Obrazac za rezervaciju tečaja je jednostavan oblik koji ilustrira načela dizajna UserForma i pridruženo VBA kodiranje.
Koristi izbor kontrola uključujući tekstne okvire, kombinirane okvire, gumbe opcija grupirane u okvir, potvrdne okvire i naredbene gumbe.
Kada korisnik klikne gumb U redu, njihov se unos unosi u sljedeći dostupan red na radnom listu.
Opis excel obrasca:
Postoje dva jednostavna okvira za tekst (Ime: i Telefon:) u koji korisnik može upisati besplatni tekst i dva kombinirana okvira (Odjel i Tečaj) koji omogućuju korisniku da odabere stavku s popisa.
Postoje tri gumba za opcije (Uvod, Srednji i Napredna) grupirano u okvir (Razina) tako da korisnik može izabrati samo jednu od opcija.
Postoje dva potvrdna okvira (Ručak obavezan i Vegetarijanac) da, budući da nisu grupirane u okviru, oboje se može odabrati ako je potrebno. Međutim, ako osoba koja vrši rezervaciju ne želi ručak, ne moramo znati jesu li vegetarijanci. Dakle, Vegetarijanac potvrdni okvir je zasivljen sve dok to nije potrebno.
Postoje tri komandne tipke (u redu, Otkazati i Očisti obrazac) od kojih svaka vrši klimu unaprijed definiranu funkciju.
Postavke svojstava kontrole:
Kontrolirati | Tip | Imovina | Postavljanje |
Korisnički obrazac | Korisnički obrazac | Ime | frmKursBooking |
Naslov | Obrazac za rezervaciju tečaja | ||
Ime | Okvir za tekst | Ime | txtName |
Telefon | Okvir za tekst | Ime | txtPhone |
Odjel | Kombinirana kutija | Ime | cboDepartman |
Tečaj | Kombinirana kutija | Ime | cboCourse |
Razina | Okvir | Ime | fraLevel |
Naslov | Razina | ||
Uvod | Gumb opcije | Ime | optUvod |
Srednji | Gumb opcije | Ime | optIntermediate |
Napredna | Gumb opcije | Ime | optAdvanced |
Ručak obavezan | Potvrdni okvir | Ime | chkLunch |
Vegetarijanac | Potvrdni okvir | Ime | chkVegetarijanski |
Omogućeno | Netočno | ||
u redu | Naredbeni gumb | Ime | cmdOk |
Naslov | u redu | ||
Zadano | Pravi | ||
Otkazati | Naredbeni gumb | Ime | cmdOdustani |
Naslov | Otkazati | ||
Otkazati | Pravi | ||
Očisti obrazac | Naredbeni gumb | Ime | cmdClearForm |
Izrada obrazaca u Excelu
Ako želite sami sastaviti obrazac, jednostavno kopirajte izgled prikazan na gornjoj ilustraciji. Slijedite korake u nastavku:
1. Otvorite radnu knjigu u koju želite da obrazac pripada (Korisnički obrasci poput makronaredbi moraju biti pridruženi radnoj knjizi) i prebacite se na uređivač Visual Basic.
2. U uređivaču programa Visual Basic kliknite na Umetnite korisnički obrazac gumb (ili idite na Umetni> Korisnički obrazac).
3. Ako se okvir s alatima ne pojavi sam (prvo kliknite obrazac kako biste bili sigurni da se ne skriva) kliknite Kutija s alatima gumb (ili idite na Pogled> Okvir s alatima).
4. Za postavljanje kontrole na obrazac kliknite odgovarajući gumb na alatnoj traci, a zatim kliknite obrazac. Kontrole se mogu pomicati povlačenjem za rubove ili im se mijenjati veličinom povlačenjem gumba po obodu.
5. Za uređivanje svojstava kontrole, provjerite je li odabrana kontrola, a zatim unesite odgovarajuće promjene u Svojstva prozor. Ako ne vidite prozor svojstava, idite na Pogled> Prozor svojstava.
6. Da biste uklonili kontrolu iz obrasca, odaberite je i kliknite na Izbrisati tipku na tipkovnici.
Korisnički obrazac zapravo neće učiniti ništa dok se ne stvori kôd koji pokreće obrazac i njegove različite kontrole. Sljedeći korak je pisanje koda koji pokreće sam obrazac.
Dodavanje koda: 1 Inicijalizacija obrasca
Inicijalizacija obrasca:
Većina obrazaca prilikom otvaranja treba neku vrstu postavljanja. To može biti postavljanje zadanih vrijednosti, provjeravanje da li je polje prazno ili sastavljanje popisa kombiniranih okvira. Taj proces se naziva Inicijalizacija obrasca i za to se brine makronaredba zvana UserForm_Initialize (u slučaju da vas zbuni moje različito pisanje riječi "initialis (z) e", to je zato što govorim engleski, a VBA govori američki - ali ne brinite, VBA će napiši to umjesto tebe!). Evo kako izgraditi kôd za inicijalizaciju obrasca za rezervaciju tečaja:
1. Za prikaz prozora koda obrasca idite na Pogled> Kôd ili kliknite F7.
2. Kada se prozor koda prvi put otvori, sadrži prazan UserForm_Click () postupak. Za odabir koristite padajuće popise pri vrhu prozora koda Korisnički obrazac i Inicijalizirati. To će stvoriti potreban postupak. Sada možete izbrisati postupak UserForm_Click ().
3. Unesite sljedeći kôd u postupak:
Privatni pod UserForm_Initialize () txtName.Value = "" txtPhone.Value = "" S cboDepartment .AddItem "Sales" .AddItem "Marketing" .AddItem "Administration" .AddItem "Design" .AddItem "Advertising" .AddItem "Dispatch". AddItem "Transportation" End With cboDepartment.Value = "" With cboCourse .AddItem "Access" .AddItem "Excel" .AddItem "PowerPoint" .AddItem "Word" .AddItem "FrontPage" End with cboCourse.Value = "" optIntroduction = True chkLunch = Netačno chkVegetarian = Lažno txtName.SetFocus End Sub
Kako funkcionira Initialise Code:
Svrha postupka UserForm_Initialize () je pripremiti korisnički obrazac u VBA -i za upotrebu, postaviti zadane vrijednosti za različite kontrole i stvoriti popise koje će prikazati kombinirani okviri.
Ovi redovi postavljaju sadržaj dvaju tekstualnih okvira na prazan:
txtName.Value = "" txtPhone.Value = ""
Slijede upute za kombinirane okvire. Prije svega se navodi sadržaj popisa, zatim se početna vrijednost kombiniranog okvira postavlja na prazno.
Uz cboDepartment .AddItem "Prodaja" .AddItem "Marketing" (koliko god je potrebno …) Završi s
cboDepartment.Value = ""
Ako je potrebno, početni izbor može se napraviti iz grupe opcija, u ovom slučaju:
optIntroduction = Istina
Oba potvrdna okvira postavljena su na Netačno (tj. Bez kvačice). Postavite na True ako želite da se potvrdni okvir pojavi već označen:
chkLunch = Netačno
chkVegetarijanski = Netačno
Konačno, fokus se prebacuje na prvi okvir za tekst. Korisnici stavljaju kursor u okvir za tekst tako da ne moraju kliknuti okvir prije nego što počnu tipkati:
txtName.SetFocus
Dodavanje koda: 2 Omogućavanje rada tipki
Na obrascu postoje tri naredbene tipke i svaka mora biti pokrenuta vlastitom procedurom. Počevši od jednostavnih…
Kodiranje tipke za odustajanje:
Ranije smo koristili prozor svojstava za postavljanje Otkazati svojstvo gumba Odustani do Pravi. Kada svojstvo Odustani naredbenog gumba postavite na True, to ima učinak "klikanja" na taj gumb kada korisnik pritisne tipku Esc tipku na njihovoj tipkovnici. Ali samo to neće uzrokovati da se bilo što dogodi s oblikom. Morate stvoriti kôd za događaj klika gumba koji će u ovom slučaju zatvoriti obrazac. Evo kako:
1. Kad je UserForm otvoren za uređivanje u uređivaču Visual Basic, dvaput kliknite gumb Odustani. Prozor koda obrasca otvara se sa cmdCancel_Click () postupak spreman za uređivanje.
2. Kôd za zatvaranje obrasca vrlo je jednostavan. Proceduri dodajte redak koda tako da izgleda ovako:
Private Sub cmdCancel_Click () Unload Me End Sub
Kodiranje gumba za brisanje obrasca:
Dodao sam gumb za brisanje obrasca u slučaju da se korisnik želi predomisliti i resetirati sve te olakšati ako ima više rezervacija odjednom. Sve što trebate učiniti je ponovno pokrenuti postupak Initialise. Makronaredbi se može reći da pokrene drugu makronaredbu (ili niz makronaredbi ako je potrebno) pomoću Poziv ključna riječ:
1. Dvaput kliknite gumb Izbriši obrazac. Prozor koda obrasca otvara se sa cmdClearForm_Click () postupak spreman za uređivanje.
2. Dodajte redak koda u postupak tako da izgleda ovako:
Private Sub cmdClearForm_Click () Pozovite UserForm_Initialize End Sub
Kodiranje gumba OK:
Ovo je dio koda koji mora obaviti posao prenošenja korisnikovih izbora i unosa teksta na radni list. Kad smo svojstvo Cancel gumba Cancel postavili na True, postavili smo i tipke OK Zadano vlasništvo do Pravi. Ovo mora biti klikom na gumb U redu kada korisnik pritisne tipku Unesi (ili Povratak) na njihovoj tipkovnici (pod uvjetom da nisu koristili svoju Tab tipka za prebacivanje na drugu tipku). Evo koda za rad gumba:
1. Dvaput kliknite gumb U redu. Prozor koda obrasca otvara se sa cmdOK_Kliknite () postupak spreman za uređivanje.
2. Uredite postupak za dodavanje sljedećeg koda:
Privatni Sub cmdOK_Click () ActiveWorkbook.Sheets ("Rezervacije tečajeva"). Aktivirajte raspon ("A1"). Odaberite Do If IsEmpty (ActiveCell) = FalseThen ActiveCell.Offset (1, 0). Odaberite End If Loop until IsEmpty (ActiveCell) = True ActiveCell.Value = txtName.Value ActiveCell.Offset (0, 1) = txtPhone.Value ActiveCell.Offset (0, 2) = cboDepartment.Value ActiveCell.Offset (0, 3) = cboCourse.Value Ako je optIntroduction = True ActiveCell.Offset (0, 4) .Value = "Intro" ElseIf optIntermediate = True then ActiveCell.Offset (0, 4) .Value = "Intermed" Else ActiveCell.Offset (0, 4) .Value = "Adv" End If Ako je chkLunch = True, tada je ActiveCell.Offset (0, 5) .Value = "Da" Ostalo ActiveCell.Offset (0, 5) .Value = "Ne" Prekini Ako Ako je chkVegetarian = Istina, tada je ActiveCell.Offset (0, 6). Value = "Yes" Else If chkLunch = False then ActiveCell.Offset (0, 6) .Value = "" Else ActiveCell.Offset (0, 6) .Value = "No" End If End If Range ("A1"). Odaberite End Sub
Kako funkcionira kod CmdOK_Click:
Prva dva retka provjeravaju je li ispravna radna knjiga aktivna i premješta odabir u ćeliju A1:
ActiveWorkbook.Sheets ("Rezervacije tečajeva"). Aktivirajte raspon ("A1"). Odaberite Sljedećih nekoliko redaka pomiče odabir niz radni list sve dok ne pronađe praznu ćeliju: Učiniti Ako je IsEmpty (ActiveCell) = False Zatim ActiveCell.Offset (1 , 0). Odaberite Kraj ako je petlja do IsEmpty (ActiveCell) = True
Sljedeća četiri retka počinju upisivati sadržaj obrasca na radni list, koristeći aktivnu ćeliju (koja se nalazi u stupcu A) kao referencu i pomiče uz red ćelija po jedna:
ActiveCell.Value = txtName.Value ActiveCell.Offset (0, 1) = txtPhone.Value ActiveCell.Offset (0, 2) = cboDepartment.Value ActiveCell.Offset (0, 3) = cboCourse.Value
Sada dolazimo do gumba opcija. Oni su postavljeni u okvir obrasca tako da korisnik može izabrati samo jedan. Naredba IF koristi se za poučavanje Excela što treba učiniti za svaku opciju:
Ako je optIntroduction = True Tada ActiveCell.Offset (0, 4) .Value = "Intro" ElseIf optIntermediate = True Onda ActiveCell.Offset (0, 4) .Value = "Intermed" Ostalo ActiveCell.Offset (0, 4) .Value = "Adv" Kraj Ako
VBA IF naredbama je mnogo lakše upravljati od Excel -ove IF funkcije. Možete imati koliko god želite opcija, samo umetnite dodatnu Inače za svaku. Da postoje samo dvije mogućnosti, ne bi vam trebale Inače, samo Ako i Drugo bi bilo dovoljno (ne zaboravite - svima je potreban Završi ako).
Za svaki potvrdni okvir postoji još jedan izraz IF. Za potvrdni okvir Lunch Required (Obavezan ručak) kvačica u okviru znači "Da", osobi je potreban ručak, a nijedan kvačica ne znači "Ne".
Ako je chkLunch = True, tada ActiveCell.Offset (0, 5) .Value = "Da" Inače ActiveCell.Offset (0, 5) .Value = "Ne" Prekini ako
Sličnu IF izjavu mogli bismo upotrijebiti za potvrdni okvir Vegetarian, ali ako osobi nije potreban ručak, nije važno je li vegetarijanka ili ne. U svakom slučaju, bilo bi pogrešno pretpostaviti da nisu vegetarijanci jednostavno zato što nisu zahtijevali ručak. Naredba IF stoga sadrži drugu, ugniježđenu naredbu if:
Ako je chkVegetarian = True Tada je ActiveCell.Offset (0, 6) .Value = "Da" Inače Ako je chkLunch = False Tada je ActiveCell.Offset (0, 6) .Value = "" Ostalo ActiveCell.Offset (0, 6) .Value = "Ne" Kraj Ako je kraj Ako
Kvačica u polju znači "Da", osoba je vegetarijanka. Ako u okviru nema kvačice, ugniježđeni IF izraz gleda potvrdni okvir Lunch Required. Ako potvrdni okvir Lunch Required (Obavezan ručak) sadrži kvačicu, nema kvačice u potvrdnom okviru Vegetarian (Vegetarijansko) znači da osoba nije vegetarijanka pa ubacuje "Ne" u ćeliju. Međutim, ako potvrdni okvir Lunch Required (Obavezan ručak) ne sadrži kvačicu, onda ne znamo je li osoba vegetarijanka (to ionako nije važno) pa ćelija ostaje prazna ("").
Konačno, odabir se vraća na početak radnog lista, spreman za sljedeći unos:
Raspon ("A1"). Odaberite
Dodavanje koda 3: Manipuliranje obrascem
Konačno, primjer kako se kontrolama na obrascu može manipulirati dok je u upotrebi. Kad su postavljena kontrolna svojstva, Omogućeno svojstvo potvrdnog okvira Vegetarian postavljeno je na Netočno. Kada kontrola nije omogućena, korisnik ne može unijeti vrijednost u njega, iako može sadržavati vrijednost koja je već bila tamo, a VBA može dodati, ukloniti ili promijeniti vrijednost.
Ne moramo znati je li osoba vegetarijanka (čak i ako jest!) Ako ne naručuje ručak. Dakle, potvrdni okvir Vegetarian ostaje onemogućen, osim ako se kvačica ne postavi u potvrdni okvir Lunch Required. Tada korisnik može označiti potvrdni okvir Vegetarijanac ako to želi. Ako označe kvačicu, znat ćemo da su odgovorili "da", a ako ne, znamo da su odgovorili "ne".
Možemo prebaciti Omogućeno nekretnina iz Netočno do Pravi tako da imate postupak koji se automatski pokreće kad god se promijeni vrijednost potvrdnog okvira Lunch Required. Srećom, više kontrola ima Promijeniti postupak i ovaj koji ovdje koristimo je chkLunch_Change (). To ćemo upotrijebiti za omogućavanje potvrdnog okvira Vegetarian kada je potvrđen okvir Lunch Required, te ga onemogućimo ako potvrdni okvir Lunch Required nije označen.
Postoji samo još jedna stvar koju moramo učiniti. Pretpostavimo da je netko označio okvir Lunch Required (Obavezan ručak), a potvrdio je i okvir Vegetarian (Vegetarijanski). Zatim su se predomislili i uklonili kvačicu iz potvrdnog okvira Lunch Required. Potvrdni okvir Vegetarian bio bi onemogućen, ali će kvačica koja je ranije postavljena ostati.
Dodatni redak koda može osigurati uklanjanje kvačice kada je okvir onemogućen. Evo cijele stvari:
Privatno Pod chkLunch_Change () Ako je chkLunch = Tačno Tada je chkVegetarian.Enabled = Istina Ostalo chkVegetarian.Enabled = Netačno chkVegetarian = Netačno kraj ako završi Sub
Otvaranje Obrasca
Obrazac je sada spreman za upotrebu pa ga je potrebno otvoriti jednostavnom makronaredbom. To se može pričvrstiti na prilagođeni gumb na alatnoj traci, naredbeni gumb nacrtan na radnom listu ili bilo koju grafiku (desnom tipkom miša kliknite grafiku i odaberite Dodijelite makronaredbu). Ako je potrebno, izradite novi modul za radnu knjigu i dodajte ovaj postupak:
Sub OpenCourseBookingForm () frmCourseBooking.Show End Sub
Ako vam se sviđaju naši blogovi, podijelite ih sa svojim prijateljima na Facebooku. Također nas možete pratiti na Twitteru i Facebooku.
Voljeli bismo čuti vaše mišljenje, javite nam kako možemo poboljšati, nadopuniti ili inovirati svoj rad i učiniti ga boljim za vas. Pišite nam na web stranici e -pošte