Hur använder jag ComboBox i VBA Excel -användarform?

Innehållsförteckning:

Anonim

En kombinationsruta på en användarform är som en rullgardinsmeny, som kan användas för att välja ett alternativ från de tillgängliga alternativen. Det är som rullgardinsmenyn vi skapar med datavalidering i kalkylblad.

I de flesta digitala former måste du ha sett minst en kombinationsruta. Det kunde ha varit för att välja en stat från en lista över stater, en kurs från en lista med kurser, ett land från en lista över länder, etc. I den här artikeln kommer vi att lära oss hur man lägger till en kombinationsruta i en VBA -användarform, hur för att initiera kombinationsrutan med värden och hur man hämtar värde från kombinationsrutan.

Lägga till en kombinationsruta i användarformuläret

För att lägga till en kombinationsruta i en användarform måste du först ha en användarform. Dah !.

Så öppna VBE med CTRL+F11. Högerklicka på arbetsboken, gå till infoga och klicka på Userform. Du har lagt till en användarform. Du kan läsa mer om användarformulär i VBA här.

Välj nu kombinationsrutan från verktygslådan. Det är det fjärde alternativet på den översta raden. Om du inte kan se verktygslådan. Gå till Visa i menyn, klicka på Verktygslåda. Verktygslådan visas.

Jag har lagt till en etikett med tillstånd eftersom den här kombinationsrutan kommer att innehålla en lista över vissa tillstånd och en skicka -knapp för att skicka formuläret.

Hur initierar jag en kombinationsruta i användarform?

Detta är den del där de flesta människor gör misstag. Ibland skriver eleverna koden för att ladda värden i kombinationsrutan och skickar sedan in knappar. Och när de läser in användarformuläret visar kombinationsrutan inga värden.

För att ladda kombinationsrutan bör du skriva koden innan du laddar användarformuläret. Detta kan göras i modulen, c eller knappen där du laddar formuläret. Koden för att ladda kombinationsrutan bör komma före kommandot formname.show.

Läser in Combobox i UserForm Calling Subroutine

Låt oss säga att jag vill hårdkoda någon matris i kombinationsrutan. Så jag kommer att skriva en delrutin som laddar användarformuläret för att fylla information. Se koden nedan.

Sub load_userform () states = Array ("Delhi", "UP", "UK", "Gujrat", "Kashmir") UserForm1.ComboBox1.List = states UserForm1.Show End Sub 

Jag definierar en matris "stater" som innehåller några namn på indiska stater. Nu använder jag användarformsnamnet för att komma åt kombinationsrutan eftersom kombibox är en del av användarform.

Min användarforms namn är userform1. Och combobox heter combobox1. Det här är standardnamn. Du kan ändra dem från fastighetsfönstret.

Därefter initierar jag kombinationsrutans listaegenskap med tillstånd.

Och sedan visar jag userform1 med kommandot show.

När du kör ovanstående kod kommer kombinationsrutan att ha alla tillstånd listade.

Initiera Combobox med UserForm_Initialize () -händelse.

En annan metod för att ladda combobox -komponenter på userform är att använda userform event Initialize. Denna händelse körs innan användarformuläret laddas. Allt du vill göra innan användarformen laddas kan du göra det här. En av dessa saker är att ladda combobox -element.

Så dubbelklicka på userform för att öppna kodningsområdet i userform -objektet. 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 () states = Array ("Delhi", "UP", "UK", "Gujrat", "Kashmir") UserForm1.ComboBox1.List = states End Sub 

Observera att vi inte har kommandot userform1.show här. Det finns fortfarande i den modulen. Den suben kommer att användas för att få vår användarform på skärmen.

Sub load_userform () UserForm1.Show End Sub 

Så användare kommer att köra load_userform sub med något kommando, knapp eller makrotilldelat element. När kompilatorn kör kommandot userform1.show körs omedelbart händelsen useforma_initialize (). Därefter visas användarformen för användare.

Anmärkningar:

Om du skriver koden för att initiera kombinationsruta med värden i kommandoknappen1 klicka, kommer kombinationsrutan inte att visa någonting.

För att initiera kombinationsrutan med värden, ladda den i alla händelser som inträffar innan användaren når kombinationsrutan för att fylla.

Hämtar värde från ComboBox

Så vi använder formulär för att få lite information. Och för att använda den informationen måste vi hämta dem. För att få något värde från användarformens kombinationsruta använder vi egenskapen combobox.value. I allmänhet hämtar vi värdena från formulärelement när användaren fyller i formuläret och skickar in formuläret med knappen Skicka. Så vi kan använda commandbutton_click -händelsen. Så sätt in en kommandoknapp och skriv skicka på den, om du inte redan har den. Dubbelklicka nu på den så kommer du in i commandButton_click -händelsen.

Skapa nu en variabel för att lagra värdet. Spara det på ett ark om du vill. Avsluta slutligen formuläret med kommandot Unload Me. Som visas i koden nedan.

Private Sub CommandButton1_Click () State = ComboBox1.Value ThisWorkbook.Worksheets ("sheet1"). Range ("A1") = State Unload Me End Sub 

Så ja killar, så här använder du kombinationsruta i VBA -användarformulär. Jag hoppas att jag var förklarande och saklig. Om du har några frågor angående detta ämne eller andra VBA -relaterade frågor, ställ mig i kommentarsfä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.