The Rezervačný formulár kurzu je jednoduchý formulár ilustrujúci princípy návrhu UserForm a súvisiace kódovanie VBA.
Využíva výber ovládacích prvkov vrátane textových polí, kombinovaných polí, tlačidiel možností zoskupených do rámčeka, začiarkavacích políčok a príkazových tlačidiel.
Keď používateľ klikne na tlačidlo OK, zadá sa jeho vstup do nasledujúceho dostupného riadka v hárku.
Popis excelovej formy:
Existujú dve jednoduché textové polia (Názov: a Telefón:), do ktorého môže užívateľ písať voľný text, a dve kombinované polia (Oddelenie a Kurz), ktoré používateľovi umožňujú vybrať si položku zo zoznamu.
K dispozícii sú tri tlačidlá možností (Úvod, Stredne pokročilí a Pokročilé) zoskupené v ráme (Úroveň), aby si používateľ mohol vybrať iba jednu z možností.
Existujú dve začiarkavacie políčka (Vyžaduje sa obed a Vegetarián), pretože pretože nie sú zoskupené do rámca, je možné v prípade potreby zvoliť obe. Ak však osoba, ktorá robí rezerváciu, nechce obed, nepotrebujeme vedieť, či sú alebo nie sú vegetariáni. Takže Vegetarián začiarkavacie políčko je sivé, kým nie je požadované.
Existujú tri príkazové tlačidlá (OK, Zrušiť a Jasná forma), z ktorých každý po kliknutí vykonáva vopred definovanú funkciu.
Nastavenia vlastností ovládania:
Ovládanie | Napíšte | Nehnuteľnosť | Nastavenie |
UserForm | UserForm | názov | frmCourseBooking |
Titulok | Rezervačný formulár kurzu | ||
názov | Textové pole | názov | txtName |
Telefón | Textové pole | názov | txtPhone |
Oddelenie | Kombinovaný box | názov | cboOddelenie |
Kurz | Kombinovaný box | názov | kurz cbo |
Úroveň | Rám | názov | fraLevel |
Titulok | Úroveň | ||
Úvod | Tlačidlo možností | názov | optÚvod |
Stredne pokročilí | Tlačidlo možností | názov | optIntermediate |
Pokročilé | Tlačidlo možností | názov | optAdvanced |
Vyžaduje sa obed | Začiarkavacie políčko | názov | chkLunch |
Vegetarián | Začiarkavacie políčko | názov | chkVegetarián |
Povolené | Falošné | ||
OK | Príkazové tlačidlo | názov | cmdOk |
Titulok | OK | ||
Predvolené | Pravda | ||
Zrušiť | Príkazové tlačidlo | názov | cmdCancel |
Titulok | Zrušiť | ||
Zrušiť | Pravda | ||
Jasná forma | Príkazové tlačidlo | názov | cmdClearForm |
Vytváranie formulárov v programe Excel
Ak chcete vytvoriť formulár sami, jednoducho skopírujte rozloženie uvedené na obrázku vyššie. Postupujte podľa nižšie uvedených krokov:
1. Otvorte zošit, do ktorého chcete formulár zaradiť (do zošita musia byť priložené používateľské formuláre ako makrá) a prepnite na editor jazyka Visual Basic.
2. V editore jazyka Visual Basic kliknite na Vložte UserForm tlačidlo (alebo prejdite na Vložiť> UserForm).
3. Ak sa panel s nástrojmi nezobrazí sám (najskôr kliknite na formulár, aby ste sa presvedčili, že sa neskrýva), kliknite na tlačidlo Sada nástrojov tlačidlo (alebo prejdite na Zobraziť> Panel s nástrojmi).
4. Ak chcete do formulára vložiť ovládací prvok, kliknite na príslušné tlačidlo na paneli s nástrojmi a potom kliknite na formulár. Ovládacie prvky je možné presúvať ťahaním za okraje alebo meniť veľkosť ťahaním tlačidiel po ich obvode.
5. Ak chcete upraviť vlastnosti ovládacieho prvku, uistite sa, že je vybratý vybratý ovládací prvok, a potom vykonajte príslušné zmeny v súbore Vlastnosti okno. Ak sa vám okno vlastností nevidí, prejdite na Zobraziť> Okno vlastností.
6. Ak chcete odstrániť ovládací prvok z formulára, vyberte ho a kliknite na ikonu Vymazať kláves na vašej klávesnici.
UserForm v skutočnosti neurobí nič, kým sa nevytvorí kód, ktorý riadi formulár a jeho rôzne ovládacie prvky. Ďalším krokom je napísanie kódu, ktorý poháňa samotný formulár.
Pridanie kódu: 1 Inicializácia formulára
Inicializácia formulára:
Väčšina formulárov potrebuje po otvorení nejaký spôsob nastavenia. Môže ísť o nastavenie predvolených hodnôt, uistenie sa, že pole je prázdne, alebo vytváranie zoznamov kombinovaných polí. Tento proces sa nazýva Inicializácia formulára a stará sa o to makro s názvom UserForm_Initialize (v prípade, že ste zmätení z môjho rôzneho pravopisu slova „initialis (z) e“, je to preto, že hovorím anglicky a VBA hovorí americky - ale nebojte sa, VBA bude hláskuj to za teba!). Tu je postup, ako vytvoriť kód na inicializáciu rezervačného formulára kurzu:
1. Okno s kódom formulára zobrazíte v časti Zobraziť> Kód alebo klikni F7.
2. Pri prvom otvorení okna s kódom je prázdne pole UserForm_Click () postup. Na výber použite rozbaľovacie zoznamy v hornej časti okna kódu UserForm a Inicializovať. Vytvorí sa tak postup, ktorý potrebujete. Teraz môžete odstrániť procedúru UserForm_Click ().
3. Do postupu zadajte nasledujúci kód:
Private Sub UserForm_Initialize () txtName.Value = "" txtPhone.Value = "" S cboDepartment .AddItem "Predaj" .AddItem "Marketing" .AddItem "Správa" .AddItem "Design" .AddItem "Reklama" .AddItem "Odoslanie". 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
Ako funguje inicializačný kód:
Účelom procedúry UserForm_Initialize () je pripraviť užívateľský formulár vo VBA na použitie, nastaviť predvolené hodnoty pre rôzne ovládacie prvky a vytvoriť zoznamy, ktoré zobrazia kombinované polia.
Tieto riadky nastavujú vyprázdnenie obsahu dvoch textových polí:
txtName.Value = "" txtPhone.Value = ""
Ďalej nasledujú pokyny pre kombinované boxy. Najprv je zadaný obsah zoznamu a potom je počiatočná hodnota poľa so zoznamom prázdna.
S cboDepartment .AddItem „Predaj“ .AddItem „Marketing“ (toľko, koľko treba …) Končiť s
cboDepartment.Value = ""
V prípade potreby je možné zo skupiny možností vykonať počiatočný výber, v tomto prípade:
optIntroduction = Pravda
Obe začiarkavacie políčka sú nastavené na hodnotu False (t. J. Nezaškrtnuté). Nastavte na True, ak chcete, aby sa začiarkavacie políčko zobrazovalo už začiarknuté:
chkLunch = nepravda
chkVegetarian = Nepravda
Nakoniec sa zameria na prvé textové pole. Tým sa kurzor používateľov umiestni do textového poľa, aby nemuseli na pole klikať, kým začnú písať:
txtName.SetFocus
Pridanie kódu: 2 Fungovanie tlačidiel
Vo formulári sú tri príkazové tlačidlá a každé musí byť napájané vlastným postupom. Počnúc tými jednoduchými…
Kódovanie tlačidla Zrušiť:
Predtým sme pomocou okna vlastností nastavili Zrušiť vlastnosť tlačidla Zrušiť do Pravda. Keď nastavíte vlastnosť príkazového tlačidla Zrušiť na hodnotu True, bude to mať za následok „kliknutie“ na toto tlačidlo, keď používateľ stlačí Esc kláves na ich klávesnici. Ale to samo osebe nespôsobí, že sa formuláru niečo stane. Musíte vytvoriť kód pre udalosť kliknutia na tlačidlo, ktoré v tomto prípade zatvorí formulár. Tu je postup:
1. Keď je UserForm otvorený na úpravu v editore jazyka Visual Basic, dvakrát kliknite na tlačidlo Zrušiť. Otvorí sa okno s kódom formulára s príponou cmdCancel_Click () postup pripravený na úpravu.
2. Kód na zatvorenie formulára je veľmi jednoduchý. Pridajte do postupu riadok kódu, aby vyzeral takto:
Private Sub cmdCancel_Click () Unload Me End Sub
Kódovanie tlačidla Vymazať formulár:
Pridal som tlačidlo na vymazanie formulára pre prípad, že by používateľ chcel zmeniť názor a všetko resetovať, a aby to bolo jednoduchšie, ak bolo potrebné vykonať niekoľko rezervácií naraz. Všetko, čo musíte urobiť, je znova spustiť postup inicializácie. Makru je možné povedať, aby spustilo ďalšie makro (alebo v prípade potreby sériu makier) pomocou príkazu Zavolajte kľúčové slovo:
1. Dvakrát kliknite na tlačidlo Vymazať formulár. Otvorí sa okno s kódom formulára s príponou cmdClearForm_Click () postup pripravený na úpravu.
2. Pridajte do postupu riadok kódu, aby vyzeral takto:
Private Sub cmdClearForm_Click () Volanie UserForm_Initialize End Sub
Kódovanie tlačidla OK:
Toto je časť kódu, ktorá má za úlohu preniesť voľby používateľa a textový vstup do pracovného hárka. Keď nastavíme vlastnosť Zrušiť tlačidla Zrušiť na True, nastavíme tiež tlačidlá OK Predvolené majetok do Pravda. Stačí kliknúť na tlačidlo OK, keď používateľ stlačí Zadajte (alebo Návrat) na klávesnici (za predpokladu, že nepoužili svoje Tab kľúč na kartu na iné tlačidlo). Tu je kód, aby tlačidlo fungovalo:
1. Dvakrát kliknite na tlačidlo OK. Otvorí sa okno s kódom formulára s príponou cmdOK_Click () postup pripravený na úpravu.
2. Upravte postup a pridajte nasledujúci kód:
Private Sub cmdOK_Click () ActiveWorkbook.Sheets ("Course Bookings"). Activate Range ("A1"). Select Do If IsEmpty (ActiveCell) = FalseThen ActiveCell.Offset (1, 0). Select End 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 If optIntroduction = True Then 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 If chkLunch = True Then ActiveCell.Offset (0, 5) .Value = "Yes" Else ActiveCell.Offset (0, 5) .Value = "No" End If If chkVegetarian = True Then ActiveCell.Offset (0, 6). Hodnota = "Áno" Ak je chkLunch = False, potom ActiveCell.Offset (0, 6) .Value = "" Else ActiveCell.Offset (0, 6) .Value = "Nie" End If End If Range ("A1"). Vyberte položku End Sub
Ako funguje kód CmdOK_Click:
Prvé dva riadky zabezpečia, aby bol aktívny správny zošit, a presunie výber do bunky A1:
ActiveWorkbook.Sheets („Course Bookings“). Aktivujte rozsah („A1“). Vyberte Nasledujúcich niekoľko riadkov presunie výber nadol do pracovného hárka, kým nenájde prázdnu bunku: Do If IsEmpty (ActiveCell) = False Then ActiveCell.Offset (1 , 0). Vyberte položku End If Loop until IsEmpty (ActiveCell) = True
Nasledujúce štyri riadky začnú zapisovať obsah formulára do pracovného hárka, pričom ako odkaz použijú aktívnu bunku (ktorá je v stĺpci A) a presunú sa. pozdĺž radu bunka naraz:
ActiveCell.Value = txtName.Value ActiveCell.Offset (0, 1) = txtPhone.Value ActiveCell.Offset (0, 2) = cboDepartment.Value ActiveCell.Offset (0, 3) = cboCourse.Value
Teraz sa dostaneme k tlačidlám možností. Tieto boli umiestnené do rámčeka vo formulári, aby si používateľ mohol vybrať iba jeden. Príkaz IF sa používa na inštrukcie Excelu, ako postupovať pri každej možnosti:
Ak optIntroduction = True Then ActiveCell.Offset (0, 4) .Value = "Intro" ElseIf optIntermediate = True Then ActiveCell.Offset (0, 4) .Value = "Intermed" Else ActiveCell.Offset (0, 4) .Value = "Adv" Koniec Ak
Spravovanie výpisov VBA IF je oveľa jednoduchšie ako funkcia IF programu Excel. Môžete mať toľko možností, koľko chcete, stačí vložiť ďalšiu Ináč Ak pre každého jedného. Ak by existovali iba dve možnosti, nepotrebovali by ste ich Ináč Ak, práve Ak a Inak stačilo (nezabudnite - všetky potrebujú súbor Koniec Ak).
Pre každé začiarkavacie políčko existuje ďalší príkaz IF. V prípade začiarkavacieho políčka Obed je povinné začiarknutie políčka znamená „Áno“. Osoba potrebuje obed, pričom žiadne začiarknutie znamená „Nie“.
If chkLunch = True Then ActiveCell.Offset (0, 5) .Value = "Yes" Else ActiveCell.Offset (0, 5) .Value = "No" End If
Podobný príkaz IF by sme mohli použiť aj pre začiarkavacie políčko Vegetarián, ale ak daná osoba nevyžaduje obed, je irelevantné, či je alebo nie je vegetarián. V každom prípade by bolo nesprávne predpokladať, že neboli vegetariáni len preto, že nevyžadovali obed. Príkaz IF preto obsahuje druhý, vnorený príkaz if:
If chkVegetarian = True Then ActiveCell.Offset (0, 6) .Value = "Yes" Else If chkLunch = False Then ActiveCell.Offset (0, 6) .Value = "" Else ActiveCell.Offset (0, 6) .Value = „Nie“ Koniec Ak Koniec Ak
Začiarknutie políčka znamená „Áno“, osoba je vegetarián. Ak v políčku nie je začiarknuté, vnorený príkaz IF sa pozrie na začiarkavacie políčko Obed požadovaný. Ak má začiarkavacie políčko Povinný obed začiarkavacie políčko, potom začiarknutie políčka Vegetariánske znamená, že daná osoba nie je vegetariánska, takže do bunky vloží „nie“. Ak však začiarkavacie políčko Vyžadovaný obed nemá začiarkavacie políčko, potom nevieme, či je alebo nie je vegetarián (na tom aj tak nezáleží), takže bunka zostane prázdna („“).
Nakoniec sa výber vráti späť na začiatok pracovného hárka a je pripravený na ďalší záznam:
Rozsah („A1“). Vyberte
Pridanie kódu 3: Manipulácia s formulárom
Nakoniec príklad, ako je možné manipulovať s ovládacími prvkami vo formulári, keď sa používa. Keď boli nastavené vlastnosti ovládania, Povolené Vlastnosť začiarkavacieho políčka Vegetarián bola nastavená na Falošné. Keď nie je aktivovaný ovládací prvok používateľ nemôže do neho zadať hodnotu, aj keď môže obsahovať hodnotu, ktorá tu už bola, a VBA môže hodnotu pridať, odstrániť alebo zmeniť.
Ak si neobjednáva obed, nemusíme vedieť, či je alebo nie je vegetarián (aj keď sú!). Vegetariánske začiarkavacie políčko teda zostane neaktívne, pokiaľ nezaškrtnete políčko Obed je povinný. Potom užívateľ môže voľne zaškrtnúť políčko Vegetarián, ak chce. Ak to zaškrtnú, budeme vedieť, že odpovedali „áno“, a ak nie, budeme vedieť, že odpovedali „nie“.
Môžeme prepnúť Povolené majetok z Falošné do Pravda tým, že má postup, ktorý sa spustí automaticky vždy, keď sa zmení hodnota začiarkavacieho políčka Obed požadovaný. Našťastie viac ovládacích prvkov má a Zmeniť postup a ten, ktorý tu používame, je chkLunch_Change (). Použijeme to na začiarknutie políčka Vegetarián, keď je začiarknuté políčko Obed požadovaný, a deaktivujeme ho, ak nie je začiarknuté políčko Obed požadovaný.
Musíme urobiť ešte jednu vec. Za predpokladu, že niekto začiarkne políčko Požadovaný obed, a tiež začiarkavacie políčko Vegetarián. Potom si to rozmysleli a zrušili začiarknutie políčka Požadovaný obed. Začiarkavacie políčko Vegetarián by bolo deaktivované, ale začiarkavacie políčko, ktoré bolo zadané skôr, zostane.
Ďalší riadok kódu môže zaistiť, aby bolo začiarknutie políčka odstránené, ak je políčko deaktivované. Tu je celá vec:
Private Sub chkLunch_Change () If chkLunch = True Then chkVegetarian.Enabled = True Else chkVegetarian.Enabled = False chkVegetarian = False End If End Sub
Otvorenie formulára
Formulár je teraz pripravený na použitie, takže ho musíte otvoriť pomocou jednoduchého makra. Je možné ho pripojiť k vlastnému tlačidlu na paneli s nástrojmi, príkazovému tlačidlu nakreslenému na pracovnom hárku alebo k ľubovoľnej grafike (kliknite pravým tlačidlom myši na grafiku a zvoľte Priradiť makro). V prípade potreby vytvorte nový modul pre zošit a pridajte tento postup:
Sub OpenCourseBookingForm () frmCourseBooking.Show End Sub
Ak sa vám páčili naše blogy, zdieľajte ich so svojimi priateľmi na Facebooku. A tiež nás môžete sledovať na Twitteri a Facebooku.
Radi by sme vás počuli, dajte nám vedieť, ako môžeme zlepšiť, doplniť alebo inovovať našu prácu a zlepšiť ju pre vás. Napíšte nám na emailovú stránku