Ako vytvoriť závislý Combobox vo VBA Excel?

Obsah:

Anonim

Vieme, ako vytvoriť kaskádovú rozbaľovaciu ponuku na hárku pomocou validácie údajov. Ako však vytvoríme kaskádový rozbaľovací zoznam komboboxov na používateľskej forme VBA. To je jedna zo základných potrieb.

V tomto článku sa naučíme, ako vytvoriť závislý kombobox vo VBA.

Logika pre závislý kombobox vo VBA

Na vytvorenie závislého komboboxu vo VBA potrebujeme inicializovať combobox v prípade zdrojového prvku. Ak napríklad kombobox závisí od skupiny prepínačov, kód na načítanie závislého komboboxu by sa mal spustiť ihneď potom, čo niekto vyberie prepínač. Alebo ak kombobox závisí od iného komboboxu, potom by sa v závislosti od komboboxu mal načítať pri každej zmene hodnoty v komboboxe.

Dosť bolo teórie. Ukážme si to na príklade, aby sme zistili, ako to funguje.

ComboBox v závislosti od iného Comboboxu

Vytvorte dva komboboxy. Najprv by ste mali uviesť niekoľko názvov krajín. Ten druhý by mal uviesť názvy štátov vybranej krajiny. Ak používateľ zmení krajinu v prvom komboboxe, mal by sa zmeniť zoznam druhého komboboxu.

Vytvorme formulár, ktorý má dva komboboxy s označením krajín a štátov a príkazové tlačidlo na odoslanie vstupu.

Prvý kombobox by mal obsahovať názvy krajín a nezávisí to od žiadnej hodnoty. Načítame ho teda do udalosti form_intialize ako pri základnej inicializácii komboboxu.

Dvakrát kliknite na užívateľský formulár. Otvorí sa oblasť kódovania v objekte UserForm. Teraz z rozbaľovacej ponuky vľavo vyberte formu používateľa. Potom v pravej rozbaľovacej ponuke vyberte položku inicializovať.

Vloží sa prázdny pod názov UserForm_Initialize (). Všetko, čo je napísané v tomto pododdiele, bude vykonané skôr, ako sa zobrazí užívateľský formulár.

Tu teda napíšeme inicializačný kód pre combobox.

Private Sub UserForm_Initialize () countries = Array ("India", "Nepal", "Bhutan", "Shree Lanka") UserForm1.ComboBox1.List = States End Sub 

Máme inicializovaný náš prvý kombobox. Kedykoľvek načítate užívateľský formulár, prvý combox bude pripravený s názvom krajín.

Teraz, aby sme načítali druhý kombobox, sa musíme pozrieť na to, aká hodnota je vybratá v prvom combobox1, a spustiť kód zakaždým, keď combobox1 zmení svoje hodnoty. Na tento účel použijeme udalosť Combobox_AfterUpdate.

V ľavom rozbaľovacom zozname vyberte položku combobox1. V pravej rozbaľovacej ponuke vyberte položku AfterUpdate. Môžeme tiež použiť udalosť Change, ale v článku sa budeme držať AfterUpdate.

Teraz napíšte nasledujúci kód:

Private Sub ComboBox1_AfterUpdate () Select Case ComboBox1.Value Case "India": States = Array ("Delhi", "UP", "UK", "Gujrat", "Kashmir") Case "Nepal": States = Array ("Arun Kshetra "," Janakpur Kshetra "," Kathmandu Kshetra ", _" Gandak Kshetra "," Kapilavastu Kshetra ") Prípad" Bhutan ": uvádza = Array (" Bumthang "," Trongsa "," Punakha "," Thimphu "," Paro ") Prípad" Shree Lanka ": stavy = pole (" Galle "," Ratnapura "," Colombo "," Badulla "," Jaffna ") Koniec Vyberte ComboBox2.List = uvádza koniec Sub 

Tu sme použili príkaz select case. Príkaz select case je dobrý, keď chceme vidieť, aká hodnota je zvolená z mnohých hodnôt. Podrobne som to tu vysvetlil.

Na uloženie hodnoty vloženej používateľom použite tlačidlo Odoslať. Nižšie uvedený kód napíšte do príkazového tlačidla Odoslať, aby ste krajinu a štát zvolený používateľom uložili do pracovného hárka.

Private Sub CommandButton1_Click () country = ComboBox1.Value State = ComboBox2.Value ThisWorkbook.Worksheets ("sheet1"). Range ("G1") = country ThisWorkbook.Worksheets ("sheet1"). Range ("H1") = State Unload Me End Sub 

Teraz, aby ste zobrazili užívateľský formulár, vložte do pracovného hárka tlačidlo a napíšte nižšie uvedený kód. Alebo môžete na zobrazenie používateľského formulára použiť jednoduchý modul.

Subload_userform () UserForm1. Zobraziť koniec pod 

Teraz spustite kód load_userform.

Ako to funguje?

Keď spustíte sub, ktorý má kód userform.show, VBA spustí udalosti userform_initialize bezprostredne po spustení príkazu userform.show. V prípade userform_intialize sme inicializovali prvý kombobox so zoznamom krajín. Potom sa formulár zobrazí používateľovi.

Teraz, keď používateľ vyberie akúkoľvek hodnotu z prvého komboboxu, spustí sa udalosť combobox1_AfterUpdate. Táto udalosť obsahuje kód na kontrolu hodnoty, ktorú používateľ vybral v hre combobox1, a na základe tejto hodnoty nastaví pole stavov a inicializuje hodnoty komboboxu pomocou poľa stavov.

Takže áno, chlapci, takto vytvoríte kaskádový kombobox v užívateľskej forme VBA. Dúfam, že som bol dostatočne vysvetľujúci a článok splnil svoj účel. Ak máte akékoľvek pochybnosti týkajúce sa tohto článku alebo akejkoľvek témy VBA, opýtajte sa ma v sekcii komentárov nižšie.

Začíname s UserForms programu Excel VBA| Vysvetlím, ako vytvoriť formulár v programe Excel, ako používať panel nástrojov VBA, ako zaobchádzať s užívateľskými vstupmi a nakoniec, ako ich uložiť. Tieto témy si prejdeme na jednom príklade a sprievodcovi krok za krokom.

Premenné VBA v Exceli| VBA je skratka pre Visual Basic for Applications. Je to programovací jazyk od spoločnosti Microsoft. Používa sa s aplikáciami balíka Microsoft Office, ako sú MSExcel, MS-Word a MS-Access, zatiaľ čo premenné VBA sú špecifické kľúčové slová.

Variabilný rozsah Excel VBA| Vo všetkých programovacích jazykoch máme špecifikátory prístupu k premenným, ktoré definujú, odkiaľ je k definovanej premennej prístup. Excel VBA nie je výnimkou. VBA má tiež špecifikátory rozsahu.

Argumenty ByRef a ByVal | Keď je argument odoslaný ako argument ByRef do iného podradeného prvku alebo funkcie, odošle sa odkaz na skutočnú premennú. Všetky zmeny vykonané v kópii premennej sa prejavia v pôvodnom argumente.

Odstráňte hárky bez výziev na potvrdenie pomocou VBA v programe Microsoft Excel | Keďže odstraňujete hárky pomocou jazyka VBA, viete, čo robíte. Chcete Excelu povedať, aby toto upozornenie nezobrazoval a vymazal ten prekliaty hárok.

Pridajte a uložte nový zošit pomocou jazyka VBA v programe Microsoft Excel 2016| V tomto kóde sme najskôr vytvorili odkaz na objekt zošita. A potom sme to inicializovali novým objektom zošita. Výhodou tohto prístupu je, že môžete ľahko vykonávať operácie s týmto novým zošitom. Rovnako ako ukladanie, zatváranie, mazanie atď

Zobrazte správu na stavovom riadku programu Excel VBA| Stavový riadok v Exceli je možné použiť ako monitor kódu. Keď je váš kód VBA dlhý a vykonávate niekoľko úloh pomocou jazyka VBA, často vypnete aktualizáciu obrazovky, aby ste videli, že obrazovka bliká.

Vypnite varovné správy pomocou VBA v programe Microsoft Excel 2016| Tento kód nielenže deaktivuje upozornenia VBA, ale tiež zvyšuje časovú účinnosť kódu. Pozrime sa ako.

Populárne články:

50 skratiek programu Excel na zvýšenie produktivity | Vykonajte svoju úlohu rýchlejšie. Týchto 50 skratiek vám umožní pracovať ešte rýchlejšie v Exceli.

Funkcia VLOOKUP v programe Excel | Toto je jedna z najpoužívanejších a najobľúbenejších funkcií programu Excel, ktorá sa používa na vyhľadávanie hodnôt z rôznych rozsahov a hárkov.

COUNTIF v Exceli 2016 | Počítajte hodnoty s podmienkami pomocou tejto úžasnej funkcie. Na počítanie konkrétnych hodnôt nie je potrebné filtrovať údaje. Funkcia Countif je potrebná na prípravu palubnej dosky.

Ako používať funkciu SUMIF v programe Excel | Toto je ďalšia zásadná funkcia palubnej dosky. To vám pomôže zhrnúť hodnoty za konkrétnych podmienok.