VBA Listbox

I VBA kan du skapa en Listbox där en användare kan välja ett av de listade alternativen. Listbox används ofta i användarformulär, men kan också användas i ett kalkylblad. I den här självstudien lär du dig hur du skapar, fyller i och tar bort en listbox. Du kommer också att se hur du får ett användarval i VBA och använder det i kod.

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

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

Skapa en listbox

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

Bild 1. Infoga en listbox i kalkylbladet

När du väljer Listbox som du infogade kan du klicka på Egenskaper under Fliken Utvecklare:

Bild 2. Ändra Listbox Properties

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

Fyll i en listbox i VBA -kod

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

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

Som du kan se i bild 3 fyllde vi vår listbox med 5 namn (John, Michael, Jennifer, Lilly och Robert):

Bild 3. Fyll i listboxen i VBA

Fyll i en listbox från ett cellintervall

Ett annat möjligt sätt att fylla i en Listbox är att låta en användare göra det. En listbox kan länkas till cellintervallet. Därför, varje gång en användare anger ett nytt värde i cellintervallet, uppdateras Listbox med det värdet.

Om du vill aktivera detta måste du gå till Egenskaper i ListBox och ställ in attributet ListFillRange:

Bild 4. Fyll i listboxen från cellintervallet

Vi länkade vår Listbox med intervallet E2: E5, där vi sätter namn vi vill ha (Nathan, Harry, George, Roberta). Som ett resultat fylls Listbox nu med dessa namn.

Få ett valt objekt i en listbox i VBA

Syftet med en Listbox är att få användarnas val. För att hämta ett värde som väljs av en användare måste du använda den här koden:

123 Dim strSelectedItem As VariantstrSelectedItem = Sheet1.lstListBox.Value

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

Bild 5. Hämta ett valt värde från Listbox i VBA

Vi valde Harry i listboxen och körde proceduren. Som du kan se i bild 5, värdet på strSelectedItem är Harry, vilket är det värde vi valde. Dessutom kan du bearbeta denna variabel i koden.

Rensa en listbox

För att rensa en Listbox i VBA måste du använda Klar metod av Sheet1.lstListBox objekt. Det raderar alla objekt från listboxen. Här är koden:

1 Sheet1.lstListBox.Clear

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

Bild 6. Rensa listboxen

Använd en listbox i en användarform

Som vi nämnde används Listbox 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 7. 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å ListBox för att skapa den i Userform.

Bild 8. Infoga en listbox i användarformen

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.lstListBox.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 listboxen med dessa fem namn:

Bild 9. Listboxen med värden i Userform

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.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave