Visual Basic je vynikající jazyk pro automatizaci opakujících se úloh v Excelu. Představte si, že posouváte svou automatizaci o stupeň výš vytvořením vysoce funkčních uživatelských formulářů, které také vypadají upraveně pro koncové uživatele.
Uživatelské formuláře ve VBA vám představují prázdné plátno; můžete navrhnout a uspořádat formuláře tak, aby vyhovovaly vašim potřebám v danou chvíli.
V této příručce se naučíte vytvořit formulář pro zadávání dat pro studenty, který zachycuje relevantní informace v propojených listech aplikace Excel.
Vytvoření uživatelského formuláře pomocí Excel VBA
Otevřete nový excelový sešit a proveďte několik předběžných kroků, než začnete vytvářet formulář pro zadávání dat.
Uložte sešit s požadovaným názvem; nezapomeňte změnit typ souboru na an Sešit Excel s podporou maker.
Příbuzný:Webové stránky a blogy, kde se dozvíte tipy a triky pro Excel
Přidejte do tohoto sešitu dva listy s následujícími názvy:
- List1: Domov
- List2: Databáze studentů
Neváhejte a změňte tato jména podle svých požadavků.
V Domov listu, přidejte tlačítko pro ovládání makra uživatelského formuláře. Přejít na Vývojář a klikněte na Knoflík možnost z Vložit rozbalovací seznam. Umístěte tlačítko kamkoli na list.
Jakmile tlačítko umístíte, přejmenujte jej. Klikněte na něj pravým tlačítkem a klikněte na Nový přiřadit nové makro pro zobrazení formuláře.
Do okna editoru zadejte následující kód:
Sub Button1_Click()
UserForm. Ukázat
End Sub
Jednou Domov a Databáze studentů listy jsou připraveny, je čas navrhnout uživatelský formulář. Přejděte na Vývojář kartu a klepněte na Visual Basic otevřete Editor. Případně můžete stisknout ALT+F11 pro otevření okna editoru.
Klikněte na Vložit kartu a vyberte UserForm.
Prázdný uživatelský formulář je připraven k použití; spolu s formulářem se otevře doprovodná sada nástrojů, která obsahuje všechny základní nástroje pro návrh rozvržení.
Z panelu nástrojů vyberte Rám volba. Přetáhněte jej do uživatelského formuláře a změňte jeho velikost.
V (název) můžete změnit název rámečku. Chcete-li zobrazit název na front-endu, můžete změnit název v Titulek sloupec.
Dále vyberte Označení možnost ze sady nástrojů a vložte dva štítky do tohoto rámečku. Přejmenujte první jako Číslo žádosti a druhý jako ID studenta.
Platí stejná logika přejmenování; změnit jména pomocí Titulek možnost v rámci Vlastnosti okno. Před změnou názvu se ujistěte, že jste vybrali příslušný štítek.
Dále vložte dvě textová pole vedle polí štítků. Ty budou použity k zachycení vstupů uživatele. Změňte názvy dvou textových polí pomocí (Název) sloupec v Vlastnosti okno. Jména jsou následující:
- Textové pole 1: txtČ
- Textové pole 2: txtStudentID
Návrh rámečku s podrobnostmi o studentovi
Vložte svislý rámeček a přidejte 10 štítků a 10 textových polí. Přejmenujte každý z nich následujícím způsobem:
- Štítek 3: název
- Štítek 4: Stáří
- Štítek5: Adresa
- Štítek6: Telefon
- Štítek7: Město
- Štítek8: Země
- Štítek 9: Datum narození
- Štítek 10: PSČ
- Štítek11: Národnost
- Štítek 12: Rod
Vložte odpovídající textová pole vedle těchto štítků; vložte dva (nebo více) tlačítko volby polí z panelu nástrojů uživatelského formuláře vedle Rod označení. Přejmenujte je mužský a ženský (spolu s Custom), resp.
Návrh rámce podrobností o kurzu
Přidejte další svislý rámeček a vložte šest štítků a šest textových polí odpovídajících každému štítku. Přejmenujte štítky takto:
- Štítek 13: Název kurzu
- Štítek 14: ID kurzu
- Štítek 15: Datum zahájení registrace
- Štítek 16: Datum ukončení registrace
- Štítek 17: Délka kurzu
- Štítek 18: oddělení
Příbuzný: 4 chybám, kterým je třeba se vyhnout při programování maker aplikace Excel pomocí VBA
Návrh rámce platebních údajů
Vložte nový rámeček; přidat nový štítek a přejmenovat jej "Přejete si aktualizovat údaje o platbě?" Vložte dvě tlačítka voleb; přejmenovat je Ano a Ne.
Podobně přidejte nový rámeček obsahující dva další štítky a dvě pole se seznamem. Přejmenujte štítky takto:
- Štítek 19: Platba přijata
- Štítek20: Režim platby
Návrh navigačního panelu
V konečném rámci přidejte tři tlačítka z panelu nástrojů, která budou obsahovat kód pro provádění formulářů.
Přejmenujte tlačítka následujícím způsobem:
- Tlačítko 1: Uložit podrobnosti
- Tlačítko 2: Vymazat formulář
- Tlačítko 3: Výstup
Psaní kódu automatického formuláře: Tlačítko Uložit podrobnosti
Dvakrát klikněte na Uložit podrobnosti knoflík. V následujícím modulu vložte následující kód:
Private Sub CommandButton2_Click()
„deklarujte proměnné používané v kódech
Dim sht As Worksheet, sht1 As Worksheet, lastrow As Long'Přidejte ověření, abyste zkontrolovali, zda se hodnoty znaků zadávají do číselných polí.
Pokud VBA.IsNumeric (txtApplicationNo. Value) = False Pak
MsgBox "V čísle aplikace jsou přijímány pouze číselné hodnoty", vbCritical
Exit Sub
End IfPokud VBA.IsNumeric (txtStudentID.Value) = False Pak
MsgBox "V ID studenta jsou přijímány pouze číselné hodnoty", vbCritical
Exit Sub
End IfPokud VBA.IsNumeric (txtAge. Hodnota) = False Pak
MsgBox "Ve věku jsou přijímány pouze číselné hodnoty", vbCritical
Exit Sub
End IfPokud VBA.IsNumeric (txtPhone. Hodnota) = False Pak
MsgBox "V telefonním čísle jsou přijímány pouze číselné hodnoty", vbCritical
Exit Sub
End IfPokud VBA.IsNumeric (Me.txtCourseID.Value) = False Then
MsgBox "V ID kurzu jsou přijímány pouze číselné hodnoty", vbCritical
Exit Sub
End If'propojte pole textového pole s podkladovými listy, abyste vytvořili pohyblivou databázi
Nastavit sht = ThisWorkbook. Tabulky ("databáze studentů")'vypočítejte poslední vyplněný řádek v obou listech
poslední řádek = sht. Rozsah("a" & Řádky. Počet).Konec (xlUp).Řádek + 1
'vložte hodnoty každého textového pole do příslušných buněk listu
S sht
.Range("a" & lastrow).Value = txtApplicationNo. Hodnota
.Range("b" & lastrow).Value = txtStudentID.Value
.Range("c" & lastrow).Value = txtName. Hodnota
.Rozsah("d" & poslední řádek).Hodnota = txtVěk. Hodnota
.Range("e" & lastrow).Value = txtDOB.Value
.Range("g" & lastrow).Value = txtAddress. Hodnota
.Range("h" & lastrow).Value = txtTelefon. Hodnota
.Range("i" & lastrow).Value = txtCity. Hodnota
.Range("j" & lastrow).Value = txtCountry. Hodnota
.Range("k" & lastrow).Value = txtZip. Hodnota
.Rozsah("l" & poslední řádek).Hodnota = txtNárodnost. Hodnota
.Range("m" & lastrow).Value = txtCourse. Hodnota
.Range("n" & lastrow).Value = txtCourseID.Value
.Range("o" & lastrow).Value = txtenrollmentstart. Hodnota
.Range("p" & lastrow).Value = txtenrollmentend. Hodnota
.Range("q" & lastrow).Hodnota = trvání txtkurzu. Hodnota
.Range("r" & lastrow).Value = txtDept. HodnotaKonec s
sht. aktivovat'určit pohlaví podle zadání uživatele
Pokud optMale. Hodnota = Pravda Pak sht. Rozsah("g" & lastrow).Value = "Muž"
Pokud optFemale. Hodnota = Pravda Pak sht. Rozsah("g" & lastrow).Value = "Žena"
'Zobrazit okno se zprávou v případě, že uživatel vybere přepínač AnoPokud optYes. Hodnota = Pravda Tehdy
MsgBox "Níže vyberte platební údaje"
Jiný:
Exit SubEnd If
End Sub
Pokud si nejste jisti, jaké části nebo kterýkoli kód znamená, nezoufejte. V další části si to důkladně vysvětlíme.
Vysvětlení kódu automatického formuláře
Textová pole budou obsahovat kombinaci textových a číselných hodnot, takže je nezbytné omezit vstup uživatele. The Číslo žádosti, ID studenta, Stáří, Telefon, ID kurzu, a Délka kurzu by měl obsahovat pouze čísla, zatímco zbytek bude obsahovat text.
Pomocí an LI kód spustí chybová vyskakovací okna, pokud uživatel zadá znak nebo textovou hodnotu do kteréhokoli z číselných polí.
Vzhledem k tomu, že jsou na místě ověření chyb, musíte propojit textová pole s buňkami listu.
The lastrow proměnné vypočítají poslední naplněný řádek a uloží do nich hodnoty pro dynamické použití.
Nakonec se hodnoty z textových polí vloží do propojeného listu aplikace Excel.
Vymazat kódy formulářů a výstupních tlačítek
V Průhledná musíte napsat kód pro vymazání stávajících hodnot z uživatelského formuláře. To lze provést následujícím způsobem:
Se mnou
.txtApplicationNo. Hodnota = ""
.txtStudentID.Value = ""
..txtName. Hodnota = ""
.txtVěk. Hodnota = ""
.txtAdresa. Hodnota = ""
.txtTelefon. Hodnota = ""
.txtCity. Hodnota = ""
.txt Země. Hodnota = ""
.txtDOB.Value = ""
.txtZip. Hodnota = ""
.txt Státní příslušnost. Hodnota = ""
.txt Kurz. Hodnota = ""
.txtCourseID.Value = ""
.txtenrollmentstart. Hodnota = ""
.txtrenrollmentend. Hodnota = ""
.txt trvání kurzu. Hodnota = ""
.txtOdd. Hodnota = ""
.cmbPaymentMode. Hodnota = ""
.cmbPlatba. Hodnota = ""
.optFemale. Hodnota = False
.optMale. Hodnota = False
.optAno. Hodnota = False
.optNo. Hodnota = False
Konec s
V výstup zadejte následující kód pro uzavření uživatelského formuláře.
Private Sub CommandButton5_Click()
Vylož mě
End Sub
Jako poslední krok musíte zadat několik posledních kusů kódu, abyste vytvořili rozevírací hodnoty pro pole se seznamem (v rámci platebních rámců).
Private Sub UserForm_Activate()
Pomocí cmbPayment
.Průhledná
.Přidat položku ""
.AddItem "Ano"
.AddItem "Ne"
Konec s
S režimem cmbPaymentMode
.Průhledná
.Přidat položku ""
.AddItem "Hotovost"
.AddItem "Karta"
.AddItem "Zkontrolovat"
Konec s
End Sub
Automatizace VBA usnadňuje práci
VBA je mnohostranný jazyk, který slouží mnoha účelům. Uživatelské formuláře jsou pouze jedním aspektem VBA – existuje mnoho dalších využití, jako je konsolidace sešitů a listů, slučování více listů aplikace Excel a další užitečná automatizační použití.
Bez ohledu na cíl automatizace je VBA na tento úkol připraven. Pokud se budete neustále učit a procvičovat, neexistuje žádný aspekt vašeho pracovního postupu, který byste nemohli zlepšit.
Sloučení dat z více než jednoho listu Excelu do stejného sešitu je skutečný problém... dokud nepoužijete makra VBA.
Přečtěte si další
- Programování
- Produktivita
- Programování ve Visual Basicu
- Microsoft Excel
Gaurav Siyal má dva roky zkušeností s psaním, psaním pro řadu digitálních marketingových firem a dokumentů životního cyklu softwaru.
Přihlaste se k odběru našeho newsletteru
Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné e-knihy a exkluzivní nabídky!
Chcete-li se přihlásit k odběru, klikněte sem