Kaip sukurti formą „Microsoft Excel“

Turinys:

Anonim

The Kursų užsakymo forma yra paprasta forma, iliustruojanti „UserForm“ dizaino principus ir susijusį VBA kodavimą.

Jis naudoja įvairius valdiklius, įskaitant teksto laukelius, kombinuotus laukelius, parinkčių mygtukus, sugrupuotus į rėmą, žymimuosius laukelius ir komandų mygtukus.

Kai vartotojas spustelėja mygtuką Gerai, jo įvestis įvedama į kitą turimą darbalapio eilutę.

„Excel“ formos aprašymas:

Yra du paprasti teksto laukeliai (Vardas: ir Telefonas:), į kurį vartotojas gali įvesti laisvą tekstą, ir du kombinuotus laukelius (Departamentas ir Kursas), kuris leidžia vartotojui pasirinkti elementą iš sąrašo.

Yra trys parinkčių mygtukai (Įvadas, Tarpinis ir Išplėstinė) sugrupuoti į rėmelį (Lygis), kad vartotojas galėtų pasirinkti tik vieną iš parinkčių.

Yra du žymės langeliai (Būtini pietūs ir Vegetaras), nes, jei jie nėra sugrupuoti į rėmą, prireikus galima pasirinkti abu. Tačiau jei užsakymą atliekantis asmuo nenori pietų, mums nereikia žinoti, ar jis yra vegetaras, ar ne. Taigi Vegetaras žymimasis laukelis yra pilkas, kol to reikia.

Yra trys komandų mygtukai (Gerai, Atšaukti ir Švari anketa), kurių kiekviena spustelėjus atlieka iš anksto nustatytą funkciją.

Valdymo ypatybių nustatymai:

Kontrolė Tipas Nuosavybė Nustatymas
UserForm UserForm vardas frmCourseBooking
Antraštė Kursų užsakymo forma
vardas Teksto langelis vardas txtName
Telefonas Teksto langelis vardas txtPhone
Departamentas Sudėtinė dėžutė vardas cboDepartment
Kursas Sudėtinė dėžutė vardas cboCourse
Lygis Rėmas vardas fraLevel
Antraštė Lygis
Įvadas Pasirinkimo mygtukas vardas įvadas
Tarpinis Pasirinkimo mygtukas vardas optIntermediate
Išplėstinė Pasirinkimo mygtukas vardas optAdvanced
Būtini pietūs Žymimasis langelis vardas chkPietas
Vegetaras Žymimasis langelis vardas chkVegetarė
Įjungtas Netiesa
Gerai Komandos mygtukas vardas cmdOk
Antraštė Gerai
Numatytas Tiesa
Atšaukti Komandos mygtukas vardas cmdCancel
Antraštė Atšaukti
Atšaukti Tiesa
Švari anketa Komandos mygtukas vardas cmdClearForm

Formų kūrimas „Excel“

Jei norite sukurti formą patys, tiesiog nukopijuokite aukščiau esančioje iliustracijoje pateiktą išdėstymą. Atlikite toliau nurodytus veiksmus.

1. Atidarykite darbaknygę, kuriai norite priskirti formą („UserForms“, pvz., Makrokomandos, turi būti pridėtos prie darbaknygės) ir pereikite prie „Visual Basic“ redaktoriaus.

2. „Visual Basic“ redaktoriuje spustelėkite Įdėkite „UserForm“ mygtuką (arba eikite į Įterpti> UserForm).

3. Jei įrankių rinkinys neatsiranda pats (pirmiausia spustelėkite formą, kad įsitikintumėte, jog ji neslepia), spustelėkite Įrankių dėžė mygtuką (arba eikite į Rodinys> Įrankių dėžė).

4. Norėdami įdėti formos valdiklį, spustelėkite atitinkamą įrankių dėžutės mygtuką, tada spustelėkite formą. Valdiklius galima perkelti vilkdami juos už kraštų arba keisti dydžius vilkdami mygtukus aplink jų perimetrą.

5. Norėdami redaguoti valdiklio ypatybes, įsitikinkite, kad pasirinktas valdiklis, tada atlikite reikiamus pakeitimus Savybės langas. Jei nematote ypatybių lango, eikite į Vaizdas> Ypatybių langas.

6. Norėdami pašalinti valdiklį iš formos, pasirinkite jį ir spustelėkite Ištrinti klavišą klaviatūroje.

„UserForm“ iš tikrųjų nieko nedarys, kol nebus sukurtas formą vedantis kodas ir įvairūs jos valdikliai. Kitas žingsnis yra parašyti kodą, kuris varo pačią formą.

Kodo pridėjimas: 1 Formos inicijavimas

Formos inicijavimas:

Atidarius daugumą formų reikia tam tikro nustatymo. Tai gali būti numatytųjų verčių nustatymas, įsitikinimas, kad laukas tuščias, arba sudėtinių laukelių sąrašų kūrimas. Šis procesas vadinamas Formos inicijavimas ir tuo pasirūpina makrokomanda, vadinama „UserForm_Initialize“ (jei jus supainioja mano įvairi žodžio „initialis (z) e“ rašyba, tai todėl, kad aš kalbu angliškai, o VBA kalba amerikietiškai - bet nesijaudinkite, VBA parašyk už tave!). Štai kaip sukurti kodą kurso užsakymo formai inicijuoti:
1. Norėdami peržiūrėti formos kodo langą, eikite į Rodinys> Kodas arba spustelėkite F7.

2. Kai pirmą kartą atidaromas kodo langas, jame yra tuščia UserForm_Click () procedūrą. Norėdami pasirinkti, naudokite kodo lango viršuje esančius išskleidžiamuosius sąrašus UserForm ir Inicijuoti. Tai sukurs jums reikalingą procedūrą. Dabar galite ištrinti procedūrą UserForm_Click ().

3. Į procedūrą įveskite šį kodą:

Private Sub UserForm_Initialize () txtName.Value = "" txtPhone.Value = "" Su cboDepartment .AddItem "Sales" .AddItem "Marketing" .AddItem "Administration" .AddItem "Design" .AddItem "Advertising" .AddItem "Dispatch". AddItem "Transportation" pabaiga su cboDepartment.Value = "" Su cboCourse .AddItem "Access" .AddItem "Excel" .AddItem "PowerPoint" .AddItem "Word" .AddItem "FrontPage" Pabaiga su cboCourse.Value = "" optIntroduction = True chkLunch = Netiesa chkVegetarian = False txtName.SetFocus End Sub 

Kaip veikia inicializacijos kodas:

Procedūros „UserForm_Initialize ()“ tikslas yra paruošti naudotojo formą VBA naudojimui, nustatyti numatytąsias įvairių valdiklių reikšmes ir sudaryti sąrašus, kuriuos parodys kombinuotieji langeliai.

Šios eilutės nustato tuščią dviejų teksto laukelių turinį:

txtName.Value = "" txtPhone.Value = "" 

Toliau pateikiamos kombinuotų laukelių instrukcijos. Pirmiausia nurodomas sąrašo turinys, tada pradinė kombinuoto laukelio vertė nustatoma į tuščią.

Su cboDepartment .AddItem "Pardavimai" .AddItem "Rinkodara" (tiek, kiek reikia …) Pabaiga 

cboDepartment.Value = ""

Jei reikia, pirminis pasirinkimas gali būti atliktas iš pasirinkimo grupės, šiuo atveju:

optIntroduction = Tiesa

Abu žymės langeliai yra nustatyti į False (t. Y. Be varnelės). Nustatykite tiesą, jei norite, kad žymimasis laukelis būtų jau pažymėtas:

chkLunch = Netiesa

chkVegetarian = Netiesa

Galiausiai, dėmesys nukreipiamas į pirmąjį teksto laukelį. Naudotojai perkelia žymeklį į teksto lauką, kad jiems nereikėtų spustelėti langelio prieš pradedant rašyti:

txtName.SetFocus

Kodo pridėjimas: 2 Kad mygtukai veiktų

Formoje yra trys komandų mygtukai ir kiekvienas turi būti maitinamas pagal savo procedūrą. Pradedant nuo paprastų…

Atšaukimo mygtuko kodavimas:

Anksčiau mes naudojome ypatybių langą, kad nustatytume Atšaukti mygtuko Atšaukti ypatybę Tiesa. Kai komandos mygtuko atšaukimo savybę nustatote į „True“, tai paspaudžia tą mygtuką, kai vartotojas paspaudžia Esc klavišą jų klaviatūroje. Tačiau vien dėl to formai nieko neatsitiks. Turite sukurti mygtuko paspaudimo įvykio, kuris tokiu atveju uždarys formą, kodą. Štai kaip:

1. Kai „UserForm“ atidaryta redaguoti „Visual Basic“ redaktoriuje, dukart spustelėkite mygtuką Atšaukti. Atidaromas formos kodo langas su cmdCancel_Click () procedūra paruošta redaguoti.

2. Formos uždarymo kodas yra labai paprastas. Pridėkite kodo eilutę prie procedūros, kad ji atrodytų taip:

Privatus antrinis cmdCancel_Click () Iškrauti mane pabaigos sub 

Valymo formos mygtuko kodavimas:

Pridėjau mygtuką, kad išvalytumėte formą, jei vartotojas norėtų persigalvoti ir viską iš naujo nustatyti, ir kad būtų lengviau, jei vienu metu turėtų atlikti kelis užsakymus. Viskas, ką jums reikia padaryti, tai dar kartą paleisti „Initialise“ procedūrą. Makrokomandai gali būti nurodyta paleisti kitą makrokomandą (arba makrokomandų seriją, jei reikia) naudojant Skambinti raktažodis:

1. Dukart spustelėkite mygtuką Išvalyti formą. Atidaromas formos kodo langas su cmdClearForm_Click () procedūra paruošta redaguoti.

2. Pridėkite kodo eilutę prie procedūros, kad ji atrodytų taip:

Privatus antrinis cmdClearForm_Click () Skambinti UserForm_Initialize End Sub 

Mygtuko OK kodavimas:

Tai yra kodo dalis, kuri turi atlikti vartotojo pasirinkimų ir teksto įvesties perkėlimą į darbalapį. Kai nustatome atšaukimo mygtuko Atšaukti ypatybę į True, taip pat nustatome mygtuką OK Numatytas turtą į Tiesa. Tai reikia spustelėti mygtuką Gerai, kai vartotojas paspaudžia Įveskite (arba Grįžti) klaviatūros klavišą (su sąlyga, kad jie nesinaudojo Skirtukas klavišą į skirtuką į kitą mygtuką). Štai kodas, kad mygtukas veiktų:

1. Dukart spustelėkite mygtuką Gerai. Atidaromas formos kodo langas su cmdOK_Click () procedūra paruošta redaguoti.

2. Redaguokite procedūrą, kad pridėtumėte šį kodą:

Privatus antraštė cmdOK_Click () ActiveWorkbook.Sheets ("Kursų užsakymai"). Aktyvinti diapazoną ("A1"). Pasirinkite Do If IsEmpty (ActiveCell) = FalseThen ActiveCell.Offset (1, 0). Pasirinkite End If Loop Before 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 If optIntroduction = Tiesa Tada ActiveCell.Offset (0, 4) .Value = "Intro" ElseIf optIntermediate = True Tada ActiveCell.Offset (0, 4) .Value = "Intermed" Else ActiveCell.Offset (0, 4) .Value = "Adv" End If If chkLunch = True Tada ActiveCell.Offset (0, 5) .Value = "Yes" Else ActiveCell.Offset (0, 5) .Value = "No" End If If chkVegetarian = True then ActiveCell.Offset (0, 6). Reikšmė = "Taip" Else Jei chkLunch = False Tada ActiveCell.Offset (0, 6) .Value = "" Else ActiveCell.Offset (0, 6) .Value = "No" End If End If Range ("A1"). Pasirinkite Pabaigos antraštė 

Kaip veikia „CmdOK_Click“ kodas:

Pirmosios dvi eilutės užtikrina, kad teisinga darbaknygė būtų aktyvi, ir perkelia pasirinkimą į langelį A1:

„ActiveWorkbook.Sheets“ („Kursų užsakymai“). Suaktyvinkite diapazoną („A1“). Pasirinkite Kitos artimiausios eilutės perkelia pasirinkimą darbalapiu žemyn, kol randa tuščią langelį: Do If IsEmpty (ActiveCell) = False then ActiveCell.Offset (1 , 0). Pasirinkite End if Loop Before IsEmpty (ActiveCell) = True 

Kitos keturios eilutės pradeda rašyti formos turinį į darbalapį, naudodami aktyvią ląstelę (kuri yra A stulpelyje) kaip nuoroda ir perkeliama palei eilę ląstelė vienu metu:

ActiveCell.Value = txtName.Value ActiveCell.Offset (0, 1) = txtPhone.Value ActiveCell.Offset (0, 2) = cboDepartment.Value ActiveCell.Offset (0, 3) = cboCourse.Value 

Dabar prieiname prie parinkčių mygtukų. Jie buvo įdėti į formos rėmelį, kad vartotojas galėtų pasirinkti tik vieną. IF nurodymas naudojamas nurodant „Excel“, ką daryti kiekvienai parinkčiai:

If optIntroduction = True Tada ActiveCell.Offset (0, 4) .Value = "Intro" ElseIf optIntermediate = True Tada ActiveCell.Offset (0, 4) .Value = "Intermed" Kita ActiveCell.Offset (0, 4) .Value = „Patarimo“ pabaiga, jei 

VBA IF teiginius valdyti daug lengviau nei „Excel“ IF funkciją. Galite turėti tiek galimybių, kiek norite, tiesiog įdėkite papildomą Kitu atveju kiekvienam. Jei būtų tik du variantai, jums to nereikėtų Kitu atveju, tik Jei ir Kitas pakaktų (nepamirškite - jiems visiems reikia an Pabaiga Jei).

Kiekvienam žymės langeliui yra dar vienas IF teiginys. Jei reikia pažymėti žymimąjį laukelį „Pietūs būtini“, varnelė laukelyje reiškia „Taip“, asmuo reikalauja pietų, o ne varnelė reiškia „ne“.

If chkLunch = True Tada ActiveCell.Offset (0, 5) .Value = "Yes" Else ActiveCell.Offset (0, 5) .Value = "No" End If 

Panašų IF teiginį galėtume naudoti ir Vegetariškas žymimasis laukelis, tačiau jei asmuo nereikalauja pietų, nesvarbu, ar jis vegetaras, ar ne. Bet kokiu atveju, būtų neteisinga manyti, kad jie nebuvo vegetarai vien todėl, kad nereikalavo pietų. Todėl IF sakinyje yra antrasis, įdėtas, jei:

Jei chkVegetarian = True Tada ActiveCell.Offset (0, 6) .Value = "Yes" Else If chkLunch = False then ActiveCell.Offset (0, 6) .Value = "" Else ActiveCell.Offset (0, 6) .Value = „Ne“ pabaiga, jei pabaiga, jei 

Varnelė laukelyje reiškia „Taip“, asmuo yra vegetaras. Jei laukelyje nėra varnelės, įdėtas IF teiginys pažvelgia į žymimąjį laukelį „Pietūs būtini“. Jei žymimasis laukelis „Privalomi pietūs“ turi varnelę, tada „Vegetariško“ žymės langelio nepažymėjimas reiškia, kad asmuo nėra vegetaras, todėl į langelį įterpia „Ne“. Tačiau jei žymimasis laukelis „Privalomi pietūs“ neturi varnelės, mes nežinome, ar žmogus yra vegetaras (ar šiaip nesvarbu), todėl langelis paliekamas tuščias („“).

Galiausiai pasirinkimas grąžinamas į darbalapio pradžią, paruoštas kitam įrašui:

Diapazonas („A1“). Pasirinkite

3 kodo pridėjimas: manipuliavimas forma

Galiausiai, pavyzdys, kaip galima valdyti formos valdiklius, kol ji naudojama. Kai buvo nustatytos valdymo savybės, Įjungtas Vegetariško žymės langelio ypatybė buvo nustatyta Netiesa. Kai valdiklis neįjungtas, Vartotojas negali į jį įvesti vertės, nors gali turėti jau buvusią vertę, o VBA gali pridėti, pašalinti arba pakeisti vertę.

Mums nereikia žinoti, ar tas asmuo yra vegetaras (net jei yra!), Jei jis neužsisako pietų. Taigi, Vegetariškas žymimasis laukelis lieka išjungtas, nebent pažymimas langelis „Būtini pietūs“. Tada vartotojas, jei nori, gali laisvai pažymėti žymės langelį Vegetariškas. Jei jie pažymės, mes žinosime, kad jie atsakė „taip“, o jei ne, mes žinome, kad jie atsakė „ne“.

Galime perjungti Įjungtas turtas iš Netiesa į Tiesa taikydami procedūrą, kuri automatiškai vykdoma, kai pasikeičia žymimojo laukelio Reikalingi pietūs vertė. Laimei, daugiau valdiklių turi Keisti procedūra, kurią naudojame čia chkLunch_Change (). Naudosime tai, kad įjungtume Vegetarišką žymimąjį langelį, kai pažymėtas žymimasis langas Pusryčiai būtini, ir išjungsime, kai nepažymėtas langelis Privalomi pietūs.

Turime padaryti dar vieną dalyką. Tarkime, kad kažkas pažymėjo žymimąjį laukelį „Pietūs būtini“, taip pat pažymėjo „Vegetariškas“. Tada jie persigalvojo ir pašalino varnelę nuo būtinų pietų. Vegetariškas žymimasis laukelis būtų išjungtas, tačiau anksčiau pažymėta varnelė liktų.

Papildoma kodo eilutė gali užtikrinti, kad varnelė būtų pašalinta, kai langelis išjungtas. Štai viskas:

Privatus poskyris chkLunch_Change () If chkLunch = Tiesa Tada chkVegetarian.Enabled = Tiesa, kita chkVegetarian.Enabled = Netiesa chkVegetarian = Netikra pabaiga, jei pabaiga 

Formos atidarymas

Forma dabar paruošta naudoti, todėl ją reikia atidaryti naudojant paprastą makrokomandą. Tai galima pridėti prie pasirinktinio įrankių juostos mygtuko, komandų mygtuko, nubrėžto darbalapyje, ar bet kurios grafikos (dešiniuoju pelės mygtuku spustelėkite grafiką ir pasirinkite Priskirti makrokomandą). Jei reikia, sukurkite naują darbo knygos modulį ir pridėkite šią procedūrą:

Sub OpenCourseBookingForm () frmCourseBooking.Show End Sub 

Jei jums patiko mūsų tinklaraščiai, pasidalykite jais su draugais „Facebook“. Taip pat galite sekti mus „Twitter“ ir „Facebook“.
Mes norėtume išgirsti jūsų nuomonę, praneškite mums, kaip galime patobulinti, papildyti ar naujovinti savo darbą ir padaryti jį geresnį. Parašykite mums el