Cum se creează o combobox dependentă în VBA Excel?

Cuprins:

Anonim

Știm cum să creăm o listă derulantă în cascadă pe o foaie de lucru folosind validarea datelor. Dar cum creăm o listă derulantă în casetă combobox pe formularul de utilizator VBA. Aceasta este una dintre nevoile de bază.

În acest articol, vom învăța cum să creați o combobox dependentă în VBA.

Logică pentru Combobox dependent în VBA

Pentru a crea o combobox dependentă în VBA, trebuie să inițializăm combobox în cazul elementului sursă. De exemplu, dacă o casetă combinată depinde de un grup de butoane radio, atunci codul pentru încărcarea casetei combinate dependente ar trebui să ruleze imediat după ce cineva selectează un buton radio. Sau dacă o combobox depinde de o altă combobox, atunci în funcție de combobox ar trebui să se încarce de fiecare dată când valoarea din combobox este modificată.

Destul de teorie. Să trecem la un exemplu pentru a vedea cum funcționează.

ComboBox în funcție de o altă combinație

Creați două combobox. Mai întâi ar trebui să enumerăm câteva nume de țări. Celălalt ar trebui să enumere numele statelor țării selectate. Dacă utilizatorul schimbă țara în prima casetă combinată, lista celei de-a doua casete combinate ar trebui modificată.

Să creăm un formular care are două casete combinate cu etichete țări și state și un buton de comandă pentru a trimite intrarea.

Prima casetă combinată ar trebui să listeze numele țărilor și nu depinde de nicio valoare. Așa că îl vom încărca în evenimentul form_intialize așa cum facem pentru inițializarea de bază a combobox-ului.

Faceți dublu clic pe formularul de utilizator. Se va deschide zona de codare în UserForm Object. Acum, din meniul derulant din stânga, selectați forma de utilizator. Apoi, din meniul derulant din dreapta, selectați inițializare.

Se va introduce un subnume gol UserForm_Initialize (). Orice lucru scris în acest sub va fi executat înainte ca formularul de utilizator să apară.

Deci, scriem aici codul de inițializare pentru combobox.

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

Avem prima noastră combobox inițializată. Ori de câte ori veți încărca formularul de utilizator, primul combox va fi gata cu numele țărilor.

Acum, pentru a încărca a doua combobox, trebuie să ne uităm la ce valoare este selectată în prima combobox1 și să rulăm codul de fiecare dată când combobox1 își schimbă valorile. Pentru aceasta vom folosi evenimentul Combobox_AfterUpdate.

Din meniul derulant din stânga, selectați combobox1. Din meniul derulant din dreapta, selectați AfterUpdate. Putem folosi, de asemenea, evenimentul Change, dar vom rămâne la AfterUpdate în articol.

Acum scrieți codul de mai jos:

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 ") Caz" Bhutan ": state = Array (" Bumthang "," Trongsa "," Punakha "," Thimphu "," Paro ") Caz" Shree Lanka ": state = Array (" Galle "," Ratnapura "," Colombo "," Badulla "," Jaffna ") End Select ComboBox2.List = state End Sub 

Aici am folosit o declarație de caz selectat. Declarația de selectare a cazului este bună atunci când vrem să vedem ce valoare este aleasă din multe valori. Am explicat aici în detaliu.

Pentru a stoca valoarea inserată de utilizator utilizați butonul de trimitere. Scrieți codul de mai jos în butonul de comandă trimitere pentru a salva țara și starea selectate de utilizator pe foaia de lucru.

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 

Acum, pentru a afișa forma de utilizator, introduceți un buton pe foaia de lucru și scrieți codul de mai jos. Sau puteți utiliza un modul simplu pentru a afișa forma de utilizator.

Sub load_userform () UserForm 1. Show End Sub 

Acum executați codul load_userform.

Cum functioneazã?

Când rulați sub-ul care are cod userform.show, VBA rulează evenimente userform_initialize imediat după ce execută comanda userform.show. În evenimentul userform_intialize am inițializat prima casetă combinată care are o listă de țări. Ulterior formularul este afișat utilizatorului.

Acum, când utilizatorul selectează orice valoare din prima combobox, evenimentul combobox1_AfterUpdate se execută. Acest eveniment conține codul pentru a verifica ce valoare este selectată de utilizator în combobox1 și pe baza acelei valori, setează matricea de stări și inițializează valorile combobox2 cu matricea de stări.

Deci, băieți, așa creați o casetă combinată în cascadă în forma de utilizator VBA. Sper că am fost suficient de explicativ și articolul și-a îndeplinit scopul. Dacă aveți îndoieli cu privire la acest articol sau orice subiect VBA, întrebați-mă în secțiunea de comentarii de mai jos.

Noțiuni introductive despre Excel VBA UserForms| Voi explica cum să creați un formular în Excel, cum să utilizați setul de instrumente VBA, cum să gestionați intrările utilizatorului și, în cele din urmă, cum să stocați intrările utilizatorului. Vom trece prin aceste subiecte folosind un exemplu și un ghid pas cu pas.

Variabile VBA în Excel| VBA înseamnă Visual Basic pentru aplicații. Este un limbaj de programare de la Microsoft. Este utilizat cu aplicații Microsoft Office, cum ar fi MSExcel, MS-Word și MS-Access, în timp ce variabilele VBA sunt cuvinte cheie specifice.

Domeniul de aplicare variabil VBA Excel| În toate limbajele de programare, avem specificatori de acces variabil care definesc de unde poate fi accesată o variabilă definită. Excel VBA nu este o excepție. Și VBA are specificatori de domeniu.

Argumente ByRef și ByVal | Când un argument este transmis ca argument ByRef către un sub sau funcție diferit, este trimisă referința variabilei reale. Orice modificare adusă copiei variabilei se va reflecta în argumentul original.

Ștergeți foile fără solicitări de confirmare folosind VBA în Microsoft Excel | Deoarece ștergeți foi folosind VBA, știți ce faceți. Ați dori să spuneți Excel să nu afișeze acest avertisment și să șteargă afurisita de foaie.

Adăugați și salvați un registru de lucru nou folosind VBA în Microsoft Excel 2016| În acest cod, am creat mai întâi o referință la un obiect de registru de lucru. Și apoi l-am inițializat cu un nou obiect de registru de lucru. Avantajul acestei abordări este că puteți face operațiuni cu ușurință pe acest nou registru de lucru. Cum ar fi salvarea, închiderea, ștergerea etc.

Afișați un mesaj pe bara de stare Excel VBA| Bara de stare în excel poate fi utilizată ca monitor de cod. Când codul dvs. VBA este lung și faceți mai multe sarcini folosind VBA, dezactivați adesea actualizarea ecranului, astfel încât să nu vedeți ecranul care pâlpâie.

Dezactivați mesajele de avertizare folosind VBA în Microsoft Excel 2016| Acest cod nu numai că dezactivează alertele VBA, ci și crește eficiența în timp a codului. Să vedem cum.

Articole populare:

50 de comenzi rapide Excel pentru a vă crește productivitatea | Deveniți mai rapid la sarcina dvs. Aceste 50 de comenzi rapide vă vor face să lucrați și mai rapid pe Excel.

Funcția VLOOKUP în Excel | Aceasta este una dintre cele mai utilizate și populare funcții ale Excel, care este utilizată pentru a căuta valoarea din diferite intervale și foi.

COUNTIF în Excel 2016 | Numărați valorile cu condiții folosind această funcție uimitoare. Nu trebuie să vă filtrați datele pentru a număra anumite valori. Funcția Countif este esențială pentru a vă pregăti tabloul de bord.

Cum se utilizează funcția SUMIF în Excel | Aceasta este o altă funcție esențială a tabloului de bord. Acest lucru vă ajută să rezumați valori în condiții specifice.