VBA-lijstvak - Geselecteerd item

Dit artikel laat zien hoe u met het geselecteerde item in een keuzelijst in Excel VBA kunt werken.

Keuzelijsten worden grotendeels gebruikt in VBA-formulieren, maar kunnen ook binnen uw Excel-werkblad worden gebruikt. Ze tonen een lijst met opties aan de gebruikers, waarvan de gebruiker er een of meer kan selecteren.

Keuzelijst maken in een VBA-formulier

Om een ​​keuzelijst in een VBA-formulier te maken, moeten we eerst het UserForm maken.

Nadat u uw formulier hebt gemaakt, selecteert u het besturingselement Keuzelijst in de werkset en sleept u vervolgens om een ​​keuzelijst op uw formulier te maken.

Waarden toevoegen aan de keuzelijst

Typ de volgende code in de gebeurtenis Initialiseren van het formulier. De keuzelijst haalt waarden op die zijn opgeslagen in een reeks cellen in uw Excel-werkblad.

123456 Private Sub UserForm_Initialize()Dim rng als bereikVoor elke rng binnen bereik ("A1:A50")Me.lstState.AddItem rng.ValueVolgende belEinde sub

Wanneer we het formulier uitvoeren, wordt de keuzelijst weergegeven zoals weergegeven in de onderstaande afbeelding:

Waarden selecteren in de keuzelijst

Standaard kan een enkele waarde worden geselecteerd in een keuzelijst in een gebruikersformulier. Dit kan echter worden gewijzigd door de eigenschap Multi-Select van de keuzelijst te wijzigen.

Klik op de keuzelijst om deze te selecteren en wijzig vervolgens in het venster Eigenschappen de eigenschap Multi-Select van 0-frmMultiSelectSingle tot 1-frmMultiSelectMulti.

Wanneer we nu het formulier uitvoeren, kunnen we meer dan één optie selecteren in de keuzelijst.

Als we de optie wijzigen om te zijn 2-frmMultiSelectExtended, betekent dit dat we een van de waarden kunnen selecteren, en dan, door de SHIFT-toets ingedrukt te houden, selecteer een andere waarde verderop in de lijst, en alle items tussen de 2 geselecteerde waarden worden ook geselecteerd.

VBA-programmering | Code Generator werkt voor u!

Werken met de geselecteerde waarden in VBA

Afhankelijk van het type optie dat we hebben gebruikt voor de eigenschap Multi-Select in de keuzelijst, zijn er een aantal manieren waarop we de waarde of waarden kunnen gebruiken die zijn geselecteerd in de keuzelijst in VBA-code.

De waarde toewijzen aan een variabele

We kunnen de Na_Update gebeurtenis van de keuzelijst om de geselecteerde waarde aan een variabele toe te wijzen.

Laten we eerst een variabele op moduleniveau maken bovenaan de formuliermodule.

Onder de woorden, Optie expliciet, maak de volgende tekenreeksvariabele.

1 Dim strState als String.

Nadat we deze variabele hebben gemaakt, kunnen we dubbelklikken op het vak Lijst om naar de code achter het formulier te gaan, of we kunnen op de codeknop in de VBE-editor klikken.

De klikgebeurtenis van de keuzelijst wordt automatisch gemaakt. Selecteer de Na_Update Evenement uit de lijst met beschikbare procedures.

Typ de volgende code in de gebeurtenis After_Update:

123 Privé sub lstState_AfterUpdate()strState = Me.lstStateEinde sub

OPMERKING: U kunt de Click-gebeurtenis verwijderen omdat dit niet vereist is.

Als we nu het formulier uitvoeren en op de keuzelijst klikken, wordt de geselecteerde waarde opgeslagen in de variabele. Om dit te testen kunnen we een BREAK punt in de code plaatsen.

Als we nu het formulier uitvoeren en op de keuzelijst klikken, gaat de code naar de DEBUG-modus en stopt bij ons breekpunt. Als we vervolgens op F8 op het toetsenbord drukken om een ​​stap verder in de code te gaan, wordt de variabele gevuld met het geselecteerde item in de lijst.

We kunnen deze waarde bekijken door de muis op de variabele te laten rusten.

OF

We kunnen de waarde bekijken in het onmiddellijke venster.

Moe van het zoeken naar voorbeelden van VBA-codes? Probeer AutoMacro!

Een opdrachtknop gebruiken om de waarde terug te sturen naar Excel

Ten eerste maken we een opdrachtknop op het formulier om een ​​OK-knop te hebben om de waarde of waarden die in de keuzelijst zijn geselecteerd, terug te sturen naar Excel.

Selecteer het besturingselement Command Button en klik en sleep vervolgens in uw formulier om de knop te maken.

Wijzig in het venster Eigenschappen de naam van de knop in cmdOK, en verander de Caption en Accelerator van de knop.

Het doel van de Accelerator is dat de gebruiker het toetsenbord gebruikt om de knop te activeren, in dit geval Alt+O zou de knop activeren.

Om de opdrachtknop te laten werken, moeten we code erachter toevoegen, zodat wanneer op de knop wordt geklikt, de code wordt uitgevoerd. Dit wordt de Click-gebeurtenis van de knop genoemd.

Dubbelklik op de knop in de ontwerpweergave van het formulier om naar de klikgebeurtenis te gaan. De klikgebeurtenis wordt automatisch gemaakt, omdat dit de gebeurtenis is die het meest wordt gebruikt voor opdrachtknoppen.

Typ de volgende code in de gebeurtenis click van de opdrachtknop.

123 Privé sub cmdOK_Click()Bereik ("E1") = strStateEinde sub

De code haalt de variabele op die we hebben gedeclareerd in de After_Update-gebeurtenis van de ListBox en retourneert de waarde naar het bereik in Excel.

Als alternatief kunnen we de waarde rechtstreeks uit de keuzelijst halen zonder een variabele te gebruiken.

123 Privé sub cmdOK_Click()Bereik ("E1") = me.lstStateEinde sub

Wanneer we het formulier uitvoeren, wordt de geselecteerde waarde geretourneerd naar Excel wanneer we op de knop OK klikken.

Meerdere waarden selecteren

Als we de eigenschap multi-select van de keuzelijst hebben ingesteld op 1 of 2, waardoor we meerdere waarden in de lijst kunnen selecteren, dan is de code om deze waarden te selecteren iets anders.

De Na_Update gebeurtenis wordt niet langer geactiveerd bij het selecteren van de waarden in de keuzelijst - we kunnen deze gebeurtenis daarom niet gebruiken.

We kunnen nog steeds de klikgebeurtenis van de opdrachtknop gebruiken, maar we moeten de waarden doorlopen die in de keuzelijst zijn geselecteerd om ze terug te sturen naar Excel.

Typ de volgende code in de opdrachtknop Klik op gebeurtenis.

12345678910 Privé sub cmdOK_Click()Dim x als geheel getalBereik ("E1"). SelecteerVoor x = 0 Naar Me.lstState.ListCount - 1Als Me.lstState.Selected(x) = True DanActiveCell = Me.lstState.List(x)ActiveCell.Offset(1, 0).SelecterenStop alsVolgende xEinde sub

Wanneer we nu het formulier uitvoeren, worden alleen de geselecteerde waarden teruggestuurd naar het Excel-blad.

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave