We weten hoe we een trapsgewijze vervolgkeuzelijst op een werkblad kunnen maken met behulp van gegevensvalidatie. Maar hoe maken we een trapsgewijze vervolgkeuzelijst met combobox op VBA-gebruikersformulier. Dit is een van de basisbehoeften.
In dit artikel zullen we leren hoe u een afhankelijke combobox in VBA kunt maken.
Logica voor afhankelijke combobox in VBA
Om een afhankelijke combobox in VBA te maken, moeten we de combobox initialiseren in het geval van het bronelement. Als een combobox bijvoorbeeld afhankelijk is van een keuzerondjegroep, moet de code om de afhankelijke combobox te laden onmiddellijk worden uitgevoerd nadat iemand een keuzerondje heeft geselecteerd. Of als een combobox afhankelijk is van een andere combobox, moet afhankelijk van de combobox elke keer dat de waarde in de combobox wordt gewijzigd, worden geladen.
Genoeg van de theorie. Laten we naar een voorbeeld springen om te zien hoe het werkt.
ComboBox Afhankelijk van een andere Combobox
Maak twee comboboxen. Eerst moeten de weinige namen van landen worden vermeld. De andere moet de namen van staten van het geselecteerde land vermelden. Als de gebruiker het land wijzigt in de eerste combobox, moet de lijst met de tweede combobox worden gewijzigd.
Laten we een formulier maken met twee comboboxen met labels landen en staten en een opdrachtknop om de invoer in te dienen.
De eerste combobox zou de namen van landen moeten vermelden en is niet afhankelijk van enige waarde. Dus we zullen het laden in form_intialize event zoals we doen voor basis combobox-initialisatie.
Dubbelklik op het gebruikersformulier. Het opent het coderingsgebied in UserForm Object. Selecteer nu in het linker vervolgkeuzemenu gebruikersformulier. Selecteer vervolgens in het rechter vervolgkeuzemenu initialiseren.
Er wordt een lege subnaam UserForm_Initialize() ingevoegd. Alles wat in deze sub wordt geschreven, wordt uitgevoerd voordat het gebruikersformulier verschijnt.
Dus we schrijven hier de initialisatiecode voor combobox.
Private Sub UserForm_Initialize() landen = Array("India", "Nepal", "Bhutan", "Shree Lanka") UserForm1.ComboBox1.List = staten End Sub
We hebben onze eerste combobox geïnitialiseerd. Telkens wanneer u het gebruikersformulier laadt, is de eerste combox klaar met de naam van de landen.
Om nu de tweede combobox te laden, moeten we kijken naar welke waarde is geselecteerd in de eerste combobox1 en de code uitvoeren telkens wanneer combobox1 zijn waarden verandert. Hiervoor gebruiken we het Combobox_AfterUpdate event.
Selecteer in de linker vervolgkeuzelijst combobox1. Selecteer AfterUpdate in het rechter vervolgkeuzemenu. We kunnen ook het evenement Wijzigen gebruiken, maar we houden het in het artikel bij AfterUpdate.
Schrijf nu de onderstaande code:
Private Sub ComboBox1_AfterUpdate() Selecteer Case ComboBox1.Value Case "India": toestanden = Array("Delhi", "UP", "UK", "Gujrat", "Kashmir") Case "Nepal": toestanden = Array ("Arun" Kshetra", "Janakpur Kshetra", "Kathmandu Kshetra",_ "Gandak Kshetra", "Kapilavastu Kshetra") Case "Bhutan": toestanden = Array ("Bumthang", "Trongsa", "Punakha", "Thimphu", " Paro") Case "Shree Lanka": states = Array("Galle", "Ratnapura", "Colombo", "Badulla", "Jaffna") End Select ComboBox2.List = staten End Sub
Hier hebben we een select case statement gebruikt. De select case-instructie is goed als we willen zien welke waarde uit veel waarden wordt gekozen. Ik heb het hier uitgebreid uitgelegd.
Gebruik de verzendknop om de door de gebruiker ingevoerde waarde op te slaan. Schrijf de onderstaande code in de opdrachtknop Verzenden om het land en de staat op te slaan die door de gebruiker op het werkblad zijn geselecteerd.
Private Sub CommandButton1_Click() country = ComboBox1.Value State = ComboBox2.Value ThisWorkbook.Worksheets("sheet1").Range("G1") = land ThisWorkbook.Worksheets("sheet1").Range("H1") = State Unload Ik beëindig sub
Om nu het gebruikersformulier te tonen, plaatst u een knop op het werkblad en schrijft u de onderstaande code. Of u kunt een eenvoudige module gebruiken om het gebruikersformulier te tonen.
Sub load_userform() UserForm1.Show End Sub
Voer nu load_userform code uit.
Hoe werkt het?
Wanneer u de sub uitvoert met code userform.show, voert de VBA userform_initialize-gebeurtenissen uit onmiddellijk nadat deze de opdracht userform.show heeft uitgevoerd. In het userform_intialize evenement hebben we de eerste combobox met een lijst van landen geïnitialiseerd. Daarna wordt het formulier aan de gebruiker getoond.
Wanneer de gebruiker nu een waarde selecteert uit de eerste combobox, wordt de gebeurtenis combobox1_AfterUpdate uitgevoerd. Deze gebeurtenis bevat de code om te controleren welke waarde door de gebruiker is geselecteerd in combobox1 en op basis van die waarde stelt het de statenarray in en initialiseert het de combobox2-waarden met de statenarray.
Dus ja jongens, dit is hoe je een trapsgewijze combobox maakt in VBA-gebruikersformulier. Ik hoop dat ik voldoende uitleg heb gegeven en dat het artikel zijn doel heeft bereikt. Als je twijfels hebt over dit artikel of een ander VBA-onderwerp, vraag het me dan in de comments hieronder.
Aan de slag met Excel VBA UserForms| Ik zal uitleggen hoe je een formulier in Excel maakt, hoe je de VBA-toolbox gebruikt, hoe je met gebruikersinvoer omgaat en tot slot hoe je de gebruikersinvoer opslaat. We zullen deze onderwerpen doornemen aan de hand van een voorbeeld en een stapsgewijze handleiding.
VBA-variabelen in Excel| VBA staat voor Visual Basic for Applications. Het is een programmeertaal van Microsoft. Het wordt gebruikt met Microsoft Office-toepassingen zoals MSExcel, MS-Word en MS-Access, terwijl VBA-variabelen specifieke trefwoorden zijn.
Excel VBA-variabel bereik| In alle programmeertalen hebben we variabele toegangsspecificaties die definiëren van waaruit toegang tot een gedefinieerde variabele kan worden verkregen. Excel VBA is geen uitzondering. VBA heeft ook scope-specificaties.
ByRef en ByVal-argumenten | Wanneer een argument als ByRef-argument wordt doorgegeven aan een andere sub of functie, wordt de referentie van de werkelijke variabele verzonden. Alle wijzigingen die in de kopie van de variabele zijn aangebracht, worden weerspiegeld in het oorspronkelijke argument.
Bladen verwijderen zonder bevestigingsvragen met VBA in Microsoft Excel | Aangezien u bladen verwijdert met VBA, weet u wat u doet. U wilt Excel vertellen deze waarschuwing niet te tonen en dat verdomde blad te verwijderen.
Nieuwe werkmap toevoegen en opslaan met VBA in Microsoft Excel 2016| In deze code hebben we eerst een verwijzing naar een werkmapobject gemaakt. En toen hebben we het geïnitialiseerd met een nieuw werkmapobject. Het voordeel van deze aanpak is dat u eenvoudig bewerkingen op deze nieuwe werkmap kunt uitvoeren. Zoals opslaan, sluiten, verwijderen, etc
Geef een bericht weer op de Excel VBA-statusbalk| De statusbalk in Excel kan worden gebruikt als codemonitor. Wanneer uw VBA-code lang is en u verschillende taken uitvoert met VBA, schakelt u vaak de schermupdate uit zodat u dat scherm niet ziet flikkeren.
Schakel waarschuwingsberichten uit met VBA in Microsoft Excel 2016| Deze code schakelt niet alleen VBA-waarschuwingen uit, maar verhoogt ook de tijdefficiëntie van de code. Laten we eens kijken hoe.
Populaire artikels:
50 Excel-snelkoppelingen om uw productiviteit te verhogen | Word sneller in uw taak. Met deze 50 sneltoetsen werk je nog sneller in Excel.
De VERT.ZOEKEN-functie in Excel | Dit is een van de meest gebruikte en populaire functies van Excel die wordt gebruikt om waarde op te zoeken uit verschillende bereiken en bladen.
AANTAL.ALS in Excel 2016 | Tel waarden met voorwaarden met behulp van deze geweldige functie. U hoeft uw gegevens niet te filteren om specifieke waarden te tellen. Countif-functie is essentieel om uw dashboard voor te bereiden.
Hoe de SUMIF-functie in Excel te gebruiken? | Dit is een andere essentiële functie van het dashboard. Dit helpt u bij het optellen van waarden voor specifieke voorwaarden.