The Obrazec za rezervacijo tečaja je preprosta oblika, ki ponazarja načela oblikovanja UserForm in s tem povezano kodiranje VBA.
Uporablja izbor kontrolnikov, vključno z besedilnimi polji, kombiniranimi polji, gumbi možnosti, združenimi v okvir, potrditvenimi polji in ukaznimi gumbi.
Ko uporabnik klikne gumb V redu, se njihov vnos vnese v naslednjo razpoložljivo vrstico na delovnem listu.
Opis obrazca Excel:
Obstajata dve preprosti besedilni polji (Ime: in Telefon:), v katero lahko uporabnik vnese prosto besedilo, in dve kombinirani polji (Oddelek in Seveda), ki uporabniku omogoča, da izbere predmet s seznama.
Obstajajo trije gumbi za izbiro (Uvod, Vmesni in Napredno) združene v okvir (Raven), tako da lahko uporabnik izbere samo eno od možnosti.
Obstajata dva potrditvena polja (Obvezno kosilo in Vegetarijanska) da je po izbiri mogoče izbrati oba, ker nista združena v okvir. Če pa naročnik ne želi kosila, nam ni treba vedeti, ali so vegetarijanci ali ne. Torej Vegetarijanska potrditveno polje je obarvano sivo, dokler ni potrebno.
Obstajajo trije ukazni gumbi (v redu, Prekliči in Počisti obrazec) vsaka od njih ob kliku izvede vnaprej določeno funkcijo.
Nastavitve lastnosti nadzora:
Nadzor | Vrsta | Lastnina | Nastavitev |
Uporabniški obrazec | Uporabniški obrazec | Ime | frmCourseBooking |
Napis | Obrazec za rezervacijo tečaja | ||
Ime | Besedilno polje | Ime | txtName |
Telefon | Besedilno polje | Ime | txtPhone |
Oddelek | Kombinirana škatla | Ime | cboDepartment |
Seveda | Kombinirana škatla | Ime | cboCourse |
Raven | Okvir | Ime | fraLevel |
Napis | Raven | ||
Uvod | Gumb možnosti | Ime | optIntroduction |
Vmesni | Gumb možnosti | Ime | optIntermediate |
Napredno | Gumb možnosti | Ime | optAdvanced |
Obvezno kosilo | Potrditveno polje | Ime | chkLunch |
Vegetarijanska | Potrditveno polje | Ime | chkVegetarijansko |
Omogočeno | Napačno | ||
v redu | Ukazni gumb | Ime | cmdOk |
Napis | v redu | ||
Privzeto | Prav | ||
Prekliči | Ukazni gumb | Ime | cmd Prekliči |
Napis | Prekliči | ||
Prekliči | Prav | ||
Počisti obrazec | Ukazni gumb | Ime | cmdClearForm |
Ustvarjanje obrazcev v Excelu
Če želite sami sestaviti obrazec, preprosto kopirajte postavitev, prikazano na zgornji sliki. Sledite spodnjim korakom:
1. Odprite delovni zvezek, v katerega želite vnesti obrazec (uporabniški obrazci, kot so makri, morajo biti priloženi delovnemu zvezku) in preklopite na urejevalnik Visual Basic.
2. V urejevalniku Visual Basic kliknite Vstavite uporabniški obrazec gumb (ali pojdite na Vstavi> Uporabniški obrazec).
3. Če se orodje ne prikaže samo (najprej kliknite obrazec, da se prepričate, da se ne skriva), kliknite Orodjarna gumb (ali pojdite na Pogled> Orodjarna).
4. Za postavitev kontrolnika na obrazec kliknite ustrezen gumb v orodjarni in nato obrazec. Kontrolnike lahko premikate tako, da jih povlečete za robove, ali pa spreminjate velikost tako, da povlečete gumbe po njihovem obodu.
5. Če želite urediti lastnosti kontrolnika, se prepričajte, da je izbran izbrani kontrolnik, nato pa ustrezno spremenite v Lastnosti okno. Če ne vidite okna lastnosti, pojdite na Pogled> Okno lastnosti.
6. Če želite kontrolnik odstraniti iz obrazca, ga izberite in kliknite gumb Izbriši tipko na tipkovnici.
Uporabniški obrazec dejansko ne bo storil ničesar, dokler ne bo ustvarjena koda, ki poganja obrazec in njegovi različni kontrolniki. Naslednji korak je, da napišete kodo, ki poganja sam obrazec.
Dodajanje kode: 1 Inicializiranje obrazca
Začetni obrazec:
Večina obrazcev potrebuje nekakšno nastavitev, ko se odprejo. To lahko nastavi privzete vrednosti, poskrbi, da je polje prazno, ali sestavi sezname kombiniranih oken. Ta proces se imenuje Inicializiranje obrazca zanj pa skrbi makro z imenom UserForm_Initialize (v primeru, da ste zmedeni zaradi mojega različnega črkovanja besede "initialis (z) e", ker govorim angleško in VBA govori ameriško - vendar ne skrbite, VBA bo napiši to zate!). Kodo za inicializacijo obrazca za rezervacijo tečaja sestavite tako:
1. Za ogled okna kode obrazca pojdite na Pogled> Koda ali kliknite F7.
2. Ko se okno za kodo prvič odpre, vsebuje prazno UserForm_Click () postopku. Za izbiro uporabite spustne sezname na vrhu okna kode Uporabniški obrazec in Inicializirajte. Tako boste ustvarili postopek, ki ga potrebujete. Zdaj lahko izbrišete postopek UserForm_Click ().
3. V postopek vnesite naslednjo kodo:
Zasebni pod -uporabniški obrazec_Initialize () txtName.Value = "" txtPhone.Value = "" Z 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 = False chkVegetarian = False txtName.SetFocus End Sub
Kako deluje začetna koda:
Namen postopka UserForm_Initialize () je pripraviti uporabniški obrazec v VBA za uporabo, nastaviti privzete vrednosti za različne kontrolnike in ustvariti sezname, ki jih bodo prikazala kombinirana polja.
V teh vrsticah se vsebina obeh besedilnih polj izprazni:
txtName.Value = "" txtPhone.Value = ""
Sledijo navodila za kombinirana polja. Najprej se določi vsebina seznama, nato se začetna vrednost kombiniranega polja nastavi na prazno.
Z cboDepartment .AddItem "Sales" .AddItem "Marketing" (kolikor je potrebno …) Končaj z
cboDepartment.Value = ""
Če je potrebno, lahko iz prve skupine izberete prvo možnost, v tem primeru:
optIntroduction = Res
Oba potrditvena polja sta nastavljena na False (torej brez kljukice). Nastavite na True, če želite, da je potrditveno polje že označeno:
chkLunch = Napačno
chkVegetarian = Napačno
Na koncu se osredotočimo na prvo polje z besedilom. S tem uporabniški kazalec postavi v besedilno polje, tako da jim ni treba klikniti polja, preden začnejo tipkati:
txtName.SetFocus
Dodajanje kode: 2 Omogočanje delovanja gumbov
Na obrazcu so trije ukazni gumbi in vsak mora delovati po svojem postopku. Začenši s preprostimi…
Kodiranje gumba za preklic:
Prej smo za nastavitev Prekliči Lastnost gumba Prekliči do Prav. Ko nastavite lastnost Prekliči ukazni gumb na True, ima učinek, da "kliknete" ta gumb, ko uporabnik pritisne Esc tipko na njihovi tipkovnici. Toda samo to ne bo povzročilo ničesar, da bi se zgodilo z obrazcem. Ustvariti morate kodo za dogodek klika gumba, ki bo v tem primeru obrazec zaprl. Takole:
1. Ko je uporabniški obrazec odprt za urejanje v urejevalniku Visual Basic, dvokliknite gumb Prekliči. Odpre se okno kode obrazca z cmdCancel_Click () postopek pripravljen za urejanje.
2. Koda za zapiranje obrazca je zelo preprosta. Postopku dodajte vrstico kode, da bo videti tako:
Private Sub cmdCancel_Click () Unload Me End Sub
Kodiranje gumba za brisanje obrazca:
Dodal sem gumb, da počistim obrazec v primeru, da bi si uporabnik želel premisliti in ponastaviti vse, ter olajšati, če bi moral narediti več rezervacij hkrati. Vse kar morate storiti je, da znova zaženete postopek Initialise. Makroju lahko rečemo, naj zažene drug makro (ali niz makrov, če je potrebno) z uporabo Pokliči ključna beseda:
1. Dvokliknite gumb Počisti obrazec. Odpre se okno kode obrazca z cmdClearForm_Click () postopek pripravljen za urejanje.
2. Postopku dodajte vrstico kode, tako da bo videti tako:
Zasebna podrejena cmdClearForm_Click () Pokliči UserForm_Initialize End Sub
Kodiranje gumba OK:
To je del kode, ki mora opraviti delo pri prenosu uporabnikovih izbir in vnosa besedila na delovni list. Ko lastnost Cancel gumba Cancel nastavimo na True, nastavimo tudi gumbe OK Privzeto lastnino do Prav. To pomeni, da uporabnik pritisne gumb V redu Vnesite (oz Vrnitev) na tipkovnici (če svoje niso uporabili Zavihek tipko za zavihek na drug gumb). Tukaj je koda, da gumb deluje:
1. Dvokliknite gumb V redu. Odpre se okno kode obrazca z cmdOK_Kliknite () postopek pripravljen za urejanje.
2. Uredite postopek, da dodate naslednjo kodo:
Private Sub cmdOK_Click () ActiveWorkbook.Sheets ("Rezervacije tečajev"). Aktivirajte obseg ("A1"). Izberite Do If IsEmpty (ActiveCell) = FalseThen ActiveCell.Offset (1, 0). Izberite 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 Če je optIntroduction = True ActiveCell.Offset (0, 4) .Value = "Intro" ElseIf optIntermediate = True Potem ActiveCell.Offset (0, 4) .Value = "Intermed" Else ActiveCell.Offset (0, 4) .Value = "Adv" Konec Če Če je chkLunch = True Potem ActiveCell.Offset (0, 5) .Value = "Da" Drugače ActiveCell.Offset (0, 5) .Value = "Ne" Konec Če Če je chkVegetarian = True Potem ActiveCell.Offset (0, 6). Vrednost = "Da" Sicer Če je chkLunch = False Potem ActiveCell.Offset (0, 6) .Value = "" Drugače ActiveCell.Offset (0, 6) .Value = "Ne" Konec, če je konec Če je obseg ("A1"). Izberite End Sub
Kako deluje koda CmdOK_Click:
Prvi dve vrstici se prepričata, da je aktiven pravilen delovni zvezek in premakne izbor v celico A1:
ActiveWorkbook.Sheets ("Rezervacije tečajev"). Aktivirajte obseg ("A1"). Izberite Naslednjih nekaj vrstic premakne izbor navzdol po delovnem listu, dokler ne najde prazne celice: Do If IsEmpty (ActiveCell) = False Potem ActiveCell.Offset (1 , 0). Izberite Končaj, če je zanka do IsEmpty (ActiveCell) = True
Naslednje štiri vrstice začnejo zapisovati vsebino obrazca na delovni list z uporabo aktivne celice (ki je v stolpcu A) kot referenco in premikanje vzdolž vrste celica naenkrat:
ActiveCell.Value = txtName.Value ActiveCell.Offset (0, 1) = txtPhone.Value ActiveCell.Offset (0, 2) = cboDepartment.Value ActiveCell.Offset (0, 3) = cboCourse.Value
Zdaj smo prišli do gumbov z možnostmi. Ti so bili postavljeni v okvir na obrazcu, tako da lahko uporabnik izbere samo enega. Stavek IF se uporablja za poučevanje Excela, kaj naj naredi za vsako možnost:
Če je optIntroduction = True, potem ActiveCell.Offset (0, 4) .Value = "Intro". "Adv" Konec Če
Izjave VBA IF je veliko lažje upravljati kot Excelovo funkcijo IF. Možnosti imate lahko kolikor želite, samo vstavite dodatno Drugače za vsakega posebej. Če bi obstajali le dve možnosti, je ne bi potrebovali Drugače, samo Če in Sicer pa bi zadostovalo (ne pozabite - vsi potrebujejo Konec Če).
Za vsako potrditveno polje obstaja še en stavek IF. Za potrditveno polje Lunch Required (Obvezno kosilo) kljukica v polju pomeni "Da", oseba potrebuje kosilo, nobena kljukica pa ne, ne.
Če je chkLunch = True, potem ActiveCell.Offset (0, 5) .Value = "Da" Drugače ActiveCell.Offset (0, 5) .Value = "Ne" Konec Če
Podobno izjavo IF bi lahko uporabili za potrditveno polje Vegetarian, vendar če oseba ne potrebuje kosila, ni pomembno, ali je vegetarijanka ali ne. V vsakem primeru bi bilo napačno domnevati, da niso vegetarijanci preprosto zato, ker niso potrebovali kosila. Stavek IF torej vsebuje drugi, ugnezdeni stavek if:
Če je chkVegetarian = True Potem ActiveCell.Offset (0, 6) .Value = "Da" Sicer Če je chkLunch = False Potem ActiveCell.Offset (0, 6) .Value = "" Druga ActiveCell.Offset (0, 6) .Value = "Ne" Konec Če Konec Če
Kljukica v polju pomeni "Da", oseba je vegetarijanka. Če v polju ni kljukice, ugnezdeni stavek IF pogleda potrditveno polje Zahtevano kosilo. Če potrditveno polje Obvezno kosilo vsebuje kljukico, potem nobena kljukica v potrditvenem polju Vegetarijanec ne pomeni, da oseba ni vegetarijanka, zato v celico vstavi "Ne". Če pa potrditveno polje Zahtevano kosilo ne vsebuje kljukice, potem ne vemo, ali je oseba vegetarijanka (to vseeno ni pomembno), zato celico pustimo prazno ("").
Končno je izbor vrnjen na začetek delovnega lista, pripravljen za naslednji vnos:
Razpon ("A1"). Izberite
Dodajanje kode 3: Upravljanje obrazca
Na koncu še primer, kako je mogoče z upravljanjem na obrazcu, medtem ko je v uporabi. Ko so bile nastavljene kontrolne lastnosti, se Omogočeno Lastnost potrditvenega polja Vegetarian je bila nastavljena na Napačno. Če nadzor ni omogočen, se uporabnik ne more vnesti vrednosti, čeprav lahko vsebuje vrednost, ki je že bila tam, in VBA lahko doda, odstrani ali spremeni vrednost.
Ni nam treba vedeti, ali je oseba vegetarijanka (tudi če je!), Če ne naroča kosila. Torej, potrditveno polje Vegetarian ostaja onemogočeno, razen če kljukico vstavite v potrditveno polje Lunch Required. Nato lahko uporabnik označi potrditveno polje Vegetarian, če želi. Če ga označimo, bomo vedeli, da so odgovorili z "da", če pa ne, vemo, da so odgovorili z "ne".
Lahko preklopimo Omogočeno premoženje iz Napačno do Prav s postopkom, ki se samodejno zažene vsakič, ko se spremeni vrednost potrditvenega polja Lunch Required. Na srečo ima več kontrolnikov a Spremenite postopek, ki ga tukaj uporabljamo chkLunch_Change (). To bomo uporabili za omogočanje vegetarijanskega potrditvenega polja, ko je označeno potrditveno polje Za kosilo, in onemogočanje, ko potrditveno polje Zahtevano kosilo ni označeno.
Samo še eno stvar moramo narediti. Predpostavimo, da je nekdo označil potrditveno polje Kosilo, potrebno pa tudi potrditveno polje Vegetarijanstvo. Nato so si premislili in kljukico odstranili iz potrditvenega polja Lunch Required. Potrditveno polje Vegetarian bi bilo onemogočeno, kljukica, ki ste jo vnesli prej, pa bi ostala.
Dodatna vrstica kode lahko zagotovi, da je kljukica odstranjena, ko je polje onemogočeno. Tukaj je vse:
Zasebno pod chkLunch_Change () Če je chkLunch = True Potem chkVegetarian.Enabled = True Drugače chkVegetarian.Enabled = False chkVegetarian = False End If End Sub
Odpiranje obrazca
Obrazec je zdaj pripravljen za uporabo, zato ga je treba odpreti s preprostim makrom. To lahko pritrdite na gumb orodne vrstice po meri, ukazni gumb, narisan na delovnem listu, ali katero koli grafiko (z desno miškino tipko kliknite grafiko in izberite Dodelite makro). Po potrebi ustvarite nov modul za delovni zvezek in dodajte ta postopek:
Sub OpenCourseBookingForm () frmCourseBooking.Show End Sub
Če so vam bili naši blogi všeč, jih delite s prijatelji na Facebooku. Prav tako nas lahko spremljate na Twitterju in Facebooku.
Radi bi slišali od vas, nam sporočite, kako lahko izboljšamo, dopolnimo ali inoviramo svoje delo in ga izboljšamo. Pišite nam na spletni strani elektronske pošte