VBA ComboBox

Kombinationsboxar tillåta användare att välja ett alternativ från en rullgardinsmenylista. Kombinationsboxar kan skapas i VBA UserForms eller med ett Excel -kalkylblad. I den här självstudien lär du dig hur du skapar och manipulerar ComboBoxes i VBA och i Excel -kalkylblad.

Om du vill lära dig hur du skapar en listbox, klicka här: VBA Listbox

Om du vill lära dig hur du skapar en kryssruta, klicka här: VBA -kryssruta

Skapa en kombinationsruta i Excel -kalkylblad

För att infoga en kombinationsruta i kalkylbladet måste du gå till Fliken Utvecklare, klick Föra in och välj under ActiveX -kontroller Kombinationsrutan:

Bild 1. Infoga en kombinationsruta i kalkylbladet

När du väljer den kombinationsruta som du har infogat kan du klicka på den Egenskaper under Fliken Utvecklare:

Bild 2. Ändra ComboBox -egenskaper

Här kan du ställa in olika egenskaper för ComboBox. För att börja ändrade vi attributet namn till cmbComboBox. Nu kan vi använda ComboBox med detta namn i VBA -kod.

Fyll i en ComboBox i VBA -kod

Först måste vi fylla i ComboBox med värden. I de flesta fall måste en kombinationsruta fyllas i när arbetsboken öppnas. På grund av detta måste vi lägga in en kod för att fylla i ComboBox i objektet Arbetsbok, procedur Öppen. Denna procedur utförs varje gång en användare öppnar arbetsboken. Här är koden:

123456789 Med Sheet1.cmbComboBox.AddItem "John".AddItem "Michael".AddItem "Jennifer".AddItem "Lilly".AddItem "Robert"Sluta med

När du klickar på rullgardinsmenyn får du fem namn att välja mellan (John, Michael, Jennifer, Lilly och Robert):

Bild 3. Fyll i ComboBox i VBA

Fyll i en kombinationsbox från ett cellintervall

Ett annat möjligt sätt att fylla i en ComboBox är att låta en användare göra det. En ComboBox kan länkas till cellintervallet. I detta tillvägagångssätt, varje gång en användare anger ett nytt värde i cellintervallet, kommer ComboBox att uppdateras med det värdet.

Om du vill aktivera detta måste du gå till Egenskaper i ComboBox och ställ in attributet ListFillRange till cellintervallet (i vårt fall E2: E5):

Bild 4. Fyll i ComboBox från cellintervallet

Vi kopplade vår ComboBox till serien E2: E5, där vi sätter namn vi vill ha (Nathan, Harry, George, Roberta). Som ett resultat fylls ComboBox nu med dessa namn:

Bild 5. Befolkad ComboBox från cellintervallet

Få ett valt objekt i en kombinationsbox i VBA

Syftet med en ComboBox är att få användarnas val. För att hämta ett användares val måste du använda den här koden:

123 Dim strSelectedItem As VariantstrSelectedItem = Sheet1.cmbComboBox.Value

Användarvalet finns i attributet Värde av Sheet1.cmbComboBox objekt. Detta värde tilldelas variabeln strSelectedItem:

Bild 6. Få ett valt värde från ComboBox i VBA

Vi valde Julia i ComboBox och utförde proceduren. Som du kan se i bild 5, värdet på strSelectedItem är Julia, vilket är det värde vi valde. Nu kan du bearbeta denna variabel vidare i koden.

Rensa en kombinationsruta

Om du vill rensa en ComboBox i VBA måste du använda Klar metod av Sheet1.lstComboBox objekt. Det kommer att ta bort alla objekt från ComboBox. Här är koden:

1 Sheet1.cmbComboBox.Clear

När vi kör koden får vi den tomma ComboBox:

Bild 7. Rensa kombinationsrutan

Använd en kombinationsruta i en användarform

Som vi nämnde används Combobox oftast i Userforms. För att förklara hur du kan göra kommer vi först att infoga en användarform. I VBA-editor, högerklicka på modulnamn, klicka på Föra in och välj UserForm:

Bild 8. Infoga en användarform

För att visa kontroller för infogning måste du aktivera Verktygslåda. För att göra detta, klicka påVerktygslåda ikonen i verktygsfältet. Efter det får du fönstren med alla tillgängliga kontroller. Du kan klicka på Kombinationsrutan för att skapa den i Userform.

Bild 9. Sätt in en kombinationsruta i användarformuläret

Vi kommer att namnge ComboBox cmbComboBox. För att fylla den med värden måste vi lägga in följande kod i metoden Initiera av föremålet UserForm:

12345678910111213 Private Sub UserForm_Initialize ()Med UserForm1.cmbComboBox.AddItem "John".AddItem "Michael".AddItem "Jennifer".AddItem "Lilly".AddItem "Robert"Sluta medAvsluta Sub

Denna kod utlöses varje gång en användare kör användarformuläret och fyller i kombinationsrutan med dessa fem namn:

Bild 10. Kombinationsboxen med värden i användarformen

Om du vill få valt värde från ComboBox måste du använda samma logik för Combobox i ett kalkylblad, vilket förklaras tidigare i artikeln.

wave wave wave wave wave