Hur skapar jag en beroende kombinationsruta i VBA Excel?

Innehållsförteckning:

Anonim

Vi vet hur vi skapar en kaskad rullgardinsmeny i ett kalkylblad med hjälp av datavalidering. Men hur skapar vi en fallande kombinationsruta i VBA -användarform? Detta är ett av de grundläggande behoven.

I den här artikeln lär vi oss hur man skapar en beroende kombinationsruta i VBA.

Logik för beroende Combobox i VBA

För att skapa en beroende kombinationsruta i VBA måste vi initialisera kombinationsrutan vid händelsen av källelementet. Om en kombinationsruta till exempel är beroende av en radioknappsgrupp, bör koden för att ladda beroende kombinationsruta köras omedelbart efter att någon har valt en alternativknapp. Eller om en kombinationsruta är beroende av en annan kombinationsruta så bör beroende på kombinationsrutan laddas varje gång värdet i kombinationsrutan ändras.

Nog med teorin. Låt oss hoppa in i ett exempel för att se hur det fungerar.

ComboBox Beroende på en annan Combobox

Skapa två kombinationsrutor. Först bör man lista de få namnen på länder. Den andra bör lista namnen på delstater i det valda landet. Om användaren byter land i den första kombinationsrutan, bör listan över den andra kombinationsrutan ändras.

Låt oss skapa ett formulär som har två kombinationsrutor med etiketter länder och stater och en kommandoknapp för att skicka inmatningen.

Den första kombinationsrutan bör lista ländernas namn och det beror inte på något värde. Så vi kommer att ladda det i form_intialize -händelse som vi gör för grundläggande combobox -initialisering.

Dubbelklicka på användarformuläret. Det öppnar kodningsområdet i UserForm Object. Välj nu användarform från den vänstra rullgardinsmenyn. Välj sedan initiera från den högra rullgardinsmenyn.

Ett tomt undernamn UserForm_Initialize () infogas. Allt som skrivs i denna under kommer att köras innan användarformen dyker upp.

Så vi skriver initialiseringskoden för combobox här.

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

Vi har vår första combobox initialiserad. När du laddar användarformuläret kommer den första kombinationsrutan att vara klar med namnet på länder.

Nu för att ladda den andra comboboxen måste vi titta på vilket värde som väljs i den första combobox1 och köra koden varje gång combobox1 ändrar dess värden. För detta kommer vi att använda Combobox_AfterUpdate -händelsen.

Från kombinationsrutan 1 till vänster. Välj AfterUpdate från den högra rullgardinsmenyn. Vi kan också använda ändringshändelsen men vi kommer att hålla oss till AfterUpdate i artikeln.

Skriv nu koden nedan:

Private Sub ComboBox1_AfterUpdate () Välj 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 ") Fall" Bhutan ": states = Array (" Bumthang "," Trongsa "," Punakha "," Thimphu "," Paro ") Fall" Shree Lanka ": states = Array (" Galle "," Ratnapura "," Colombo "," Badulla "," Jaffna ") End Select ComboBox2.List = states End Sub 

Här har vi använt ett utvalt fallbesked. Select case -uttalandet är bra när vi vill se vilket värde som väljs bland många värden. Jag har förklarat det här i detalj.

För att lagra det värde som användaren har lagt in använder du skicka -knappen. Skriv koden nedan i kommandoknappen Skicka för att spara landet och staten som användaren valt i kalkylbladet.

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 

För att visa användarformen, sätt in en knapp på kalkylbladet och skriv koden nedan. Eller så kan du använda en enkel modul för att visa användarformen.

Sub load_userform () UserForm1.Show End Sub 

Kör nu load_userform -kod.

Hur fungerar det?

När du kör suben som har koden userform.show kör VBA userform_initialize -händelser omedelbart efter att den har kommandot userform.show. I händelsen userform_intialize har vi initierat den första kombinationsrutan som har en lista över länder. Därefter visas formuläret för användaren.

När användaren nu väljer något värde från den första kombinationsrutan körs händelse combobox1_AfterUpdate -händelsen. Den här händelsen innehåller koden för att kontrollera vilket värde som väljs av användaren i combobox1 och baserat på det värdet, ställer det tillståndsmatrisen och initierar combobox2 -värdena med tillståndsmatris.

Så ja killar, så här skapar du en kaskad kombinationsruta i VBA -användarform. Jag hoppas att jag var tillräckligt förklarande och att artikeln tjänade sitt syfte. Om du har några tvivel angående denna artikel eller något VBA -ämne, fråga mig i kommentarfältet nedan.

Komma igång med Excel VBA UserForms| Jag kommer att förklara hur man skapar ett formulär i excel, hur man använder VBA -verktygslåda, hur man hanterar användarinmatningar och slutligen hur man lagrar användarinmatningarna. Vi kommer att gå igenom dessa ämnen med ett exempel och steg för steg -guide.

VBA -variabler i Excel| VBA står för Visual Basic for Applications. Det är ett programmeringsspråk från Microsoft. Den används med Microsoft Office-applikationer som MSExcel, MS-Word och MS-Access medan VBA-variabler är specifika nyckelord.

Excel VBA variabelt omfång| På alla programmeringsspråk har vi variabelåtkomstspecificerare som definierar varifrån en definierad variabel kan nås. Excel VBA är inget undantag. VBA har också omfångsspecifikatorer.

ByRef och ByVal -argument | När ett argument skickas som ett ByRef -argument till en annan sub eller funktion skickas referensen till den faktiska variabeln. Alla ändringar som görs i kopian av variabeln återspeglas i det ursprungliga argumentet.

Ta bort blad utan bekräftelsefrågor med VBA i Microsoft Excel | Eftersom du raderar blad med VBA vet du vad du gör. Du vill berätta för Excel att inte visa den här varningen och ta bort det jävla arket.

Lägg till och spara ny arbetsbok med VBA i Microsoft Excel 2016| I den här koden skapade vi först en referens till ett arbetsbokobjekt. Och sedan initierade vi det med ett nytt arbetsbokobjekt. Fördelen med detta tillvägagångssätt är att du enkelt kan utföra den nya arbetsboken. Som att spara, stänga, radera osv

Visa ett meddelande i Excel VBA -statusfältet| Statusfältet i excel kan användas som kodmonitor. När din VBA -kod är lång och du utför flera uppgifter med VBA, inaktiverar du ofta skärmuppdateringen så att du inte ser att skärmen flimrar.

Stäng av varningsmeddelanden med VBA i Microsoft Excel 2016| Denna kod inaktiverar inte bara VBA -varningar utan ökar också kodens tidseffektivitet. Låt oss se hur.

Populära artiklar:

50 Excel -genvägar för att öka din produktivitet | Bli snabbare på din uppgift. Dessa 50 genvägar får dig att arbeta ännu snabbare med Excel.

VLOOKUP -funktionen i Excel | Detta är en av de mest använda och populära Excel -funktionerna som används för att leta upp värde från olika intervall och ark.

COUNTIF i Excel 2016 | Räkna värden med förhållanden med denna fantastiska funktion. Du behöver inte filtrera dina data för att räkna specifika värden. Countif -funktionen är avgörande för att förbereda din instrumentpanel.

Hur man använder SUMIF -funktionen i Excel | Detta är en annan viktig instrumentpanel. Detta hjälper dig att summera värden på specifika förhållanden.