Wie erstellt man eine abhängige Combobox in VBA Excel?

Inhaltsverzeichnis:

Anonim

Wir wissen, wie man mithilfe der Datenvalidierung ein kaskadierendes Dropdown-Menü auf einem Arbeitsblatt erstellt. Aber wie erstellen wir eine kaskadierende Combobox-Dropdown-Liste in VBA-Benutzerformularen? Dies ist eines der Grundbedürfnisse.

In diesem Artikel erfahren Sie, wie Sie eine abhängige Combobox in VBA erstellen.

Logik für abhängige Combobox in VBA

Um eine abhängige Combobox in VBA zu erstellen, müssen wir die Combobox beim Ereignis des Quellelements initialisieren. Wenn beispielsweise eine Combobox von einer Optionsfeldgruppe abhängt, sollte der Code zum Laden der abhängigen Combobox sofort ausgeführt werden, nachdem jemand ein Optionsfeld ausgewählt hat. Oder wenn eine Combobox von einer anderen Combobox abhängt, sollte diese abhängig von der Combobox jedes Mal geladen werden, wenn der Wert in der Combobox geändert wird.

Genug der Theorie. Lassen Sie uns zu einem Beispiel springen, um zu sehen, wie es funktioniert.

ComboBox abhängig von einer anderen Combobox

Erstellen Sie zwei Comboboxen. Zuerst sollte man die wenigen Ländernamen aufzählen. Der andere sollte die Namen der Staaten des ausgewählten Landes auflisten. Wenn der Benutzer das Land in der ersten Combobox ändert, sollte die Liste der zweiten Combobox geändert werden.

Erstellen wir ein Formular mit zwei Kombinationsfeldern mit den Bezeichnungen Länder und Bundesstaaten und einer Befehlsschaltfläche zum Senden der Eingabe.

Die erste Combobox sollte die Namen der Länder auflisten und ist von keinem Wert abhängig. Wir werden es also in das form_intialize-Ereignis laden, wie wir es für die grundlegende Combobox-Initialisierung tun.

Doppelklicken Sie auf das Benutzerformular. Es öffnet den Codierungsbereich im UserForm-Objekt. Wählen Sie nun aus dem linken Dropdown-Menü Benutzerformular aus. Wählen Sie dann im rechten Dropdown-Menü die Option Initialisieren.

Ein leerer Untername UserForm_Initialize() wird eingefügt. Alles, was in dieses Untermenü geschrieben wird, wird ausgeführt, bevor das Benutzerformular angezeigt wird.

Also schreiben wir hier den Initialisierungscode für die Combobox.

Private Sub UserForm_Initialize() Länder = Array("Indien", "Nepal", "Bhutan", "Shree Lanka") UserForm1.ComboBox1.List = Staaten End Sub 

Wir haben unsere erste Combobox initialisiert. Immer wenn Sie das Benutzerformular laden, ist die erste Combox mit den Ländernamen fertig.

Um nun die zweite Combobox zu laden, müssen wir uns ansehen, welcher Wert in der ersten Combobox1 ausgewählt ist, und den Code jedes Mal ausführen, wenn Combobox1 ihre Werte ändert. Dazu verwenden wir das Ereignis Combobox_AfterUpdate.

Wählen Sie in der linken Dropdown-Liste Combobox1 aus. Wählen Sie im rechten Dropdown-Menü AfterUpdate aus. Wir können auch das Change-Ereignis verwenden, aber wir bleiben im Artikel bei AfterUpdate.

Schreiben Sie nun den folgenden Code:

Private Sub ComboBox1_AfterUpdate() Case auswählen ComboBox1.Value Case "India": States = Array("Delhi", "UP", "UK", "Gujrat", "Kashmir") Case "Nepal": States = Array("Arun .) Kshetra", "Janakpur Kshetra", "Kathmandu Kshetra",_ "Gandak Kshetra", "Kapilavastu Kshetra") Fall "Bhutan": States = Array("Bumthang", "Trongsa", "Punakha", "Thimphu", " Paro") Case "Shree Lanka": States = Array("Galle", "Ratnapura", "Colombo", "Badulla", "Jaffna") End Select ComboBox2.List = States End Sub 

Hier haben wir eine Select-Case-Anweisung verwendet. Die select case-Anweisung ist gut, wenn wir sehen möchten, welcher Wert aus vielen Werten ausgewählt wird. Ich habe es hier ausführlich erklärt.

Um den vom Benutzer eingegebenen Wert zu speichern, verwenden Sie die Schaltfläche Senden. Schreiben Sie den folgenden Code in die Befehlsschaltfläche Senden, um das Land und den Bundesstaat zu speichern, die vom Benutzer auf dem Arbeitsblatt ausgewählt wurden.

Private Sub CommandButton1_Click() country = ComboBox1.Value State = ComboBox2.Value ThisWorkbook.Worksheets("sheet1").Range("G1") = Land ThisWorkbook.Worksheets("sheet1").Range("H1") = State Unload Ich End Sub 

Um nun das Benutzerformular anzuzeigen, fügen Sie eine Schaltfläche in das Arbeitsblatt ein und schreiben Sie den folgenden Code. Oder Sie können ein einfaches Modul verwenden, um das Benutzerformular anzuzeigen.

Sub load_userform() UserForm1.Show End Sub 

Führen Sie nun den load_userform-Code aus.

Wie funktioniert es?

Wenn Sie das Sub ausführen, das den Code userform.show enthält, führt der VBA sofort nach der Ausführung des Befehls userform.show userform_initialize-Ereignisse aus. Im Ereignis userform_intialize haben wir die erste Combobox mit einer Länderliste initialisiert. Anschließend wird dem Benutzer das Formular angezeigt.

Wenn der Benutzer nun einen Wert aus der ersten Combobox auswählt, wird das Ereignis combobox1_AfterUpdate ausgeführt. Dieses Ereignis enthält den Code, um zu überprüfen, welcher Wert vom Benutzer in Combobox1 ausgewählt wurde, und basierend auf diesem Wert setzt es das Status-Array und initialisiert die Werte von combobox2 mit dem Status-Array.

Also ja Leute, so erstellen Sie eine kaskadierende Combobox in der VBA-Benutzerform. Ich hoffe, ich war erklärend genug und der Artikel hat seinen Zweck erfüllt. Wenn Sie Zweifel an diesem Artikel oder einem VBA-Thema haben, fragen Sie mich im Kommentarbereich unten.

Erste Schritte mit Excel VBA UserForms| Ich werde erklären, wie Sie ein Formular in Excel erstellen, wie Sie die VBA-Toolbox verwenden, wie Sie Benutzereingaben verarbeiten und schließlich die Benutzereingaben speichern. Wir werden diese Themen anhand eines Beispiels und einer Schritt-für-Schritt-Anleitung durchgehen.

VBA-Variablen in Excel| VBA steht für Visual Basic für Applikationen. Es ist eine Programmiersprache von Microsoft. Es wird mit Microsoft Office-Anwendungen wie MSExcel, MS-Word und MS-Access verwendet, während VBA-Variablen spezifische Schlüsselwörter sind.

Gültigkeitsbereich von Excel-VBA-Variablen| In allen Programmiersprachen haben wir Variablenzugriffsspezifizierer, die definieren, von wo aus auf eine definierte Variable zugegriffen werden kann. Excel VBA ist keine Ausnahme. Auch VBA hat Bereichsspezifizierer.

ByRef- und ByVal-Argumente | Wenn ein Argument als ByRef-Argument an eine andere Unterfunktion oder Funktion übergeben wird, wird die Referenz der tatsächlichen Variablen gesendet. Alle Änderungen, die an der Kopie der Variablen vorgenommen werden, spiegeln sich im ursprünglichen Argument wider.

Löschen Sie Blätter ohne Bestätigungsaufforderung mit VBA in Microsoft Excel | Da Sie Blätter mit VBA löschen, wissen Sie, was Sie tun. Sie möchten Excel anweisen, diese Warnung nicht anzuzeigen und das verdammte Blatt zu löschen.

Hinzufügen und Speichern einer neuen Arbeitsmappe mit VBA in Microsoft Excel 2016| In diesem Code haben wir zuerst einen Verweis auf ein Arbeitsmappenobjekt erstellt. Und dann haben wir es mit einem neuen Arbeitsmappenobjekt initialisiert. Der Vorteil dieses Ansatzes besteht darin, dass Sie Vorgänge in dieser neuen Arbeitsmappe problemlos ausführen können. Wie Speichern, Schließen, Löschen usw.

Anzeigen einer Nachricht in der Excel VBA-Statusleiste| Die Statusleiste in Excel kann als Codemonitor verwendet werden. Wenn Ihr VBA-Code lang ist und Sie mehrere Aufgaben mit VBA ausführen, deaktivieren Sie häufig die Bildschirmaktualisierung, damit dieser Bildschirm nicht flackert.

Deaktivieren Sie Warnmeldungen mit VBA in Microsoft Excel 2016| Dieser Code deaktiviert nicht nur VBA-Warnungen, sondern erhöht auch die Zeiteffizienz des Codes. Mal sehen wie.

Populäre Artikel:

50 Excel-Kurzbefehle zur Steigerung Ihrer Produktivität | Werden Sie schneller bei Ihrer Aufgabe. Mit diesen 50 Tastenkombinationen arbeiten Sie noch schneller mit Excel.

Die SVERWEIS-Funktion in Excel | Dies ist eine der am häufigsten verwendeten und beliebtesten Funktionen von Excel, die verwendet wird, um Werte aus verschiedenen Bereichen und Blättern zu suchen.

ZÄHLENWENN in Excel 2016 | Zählen Sie Werte mit Bedingungen mit dieser erstaunlichen Funktion. Sie müssen Ihre Daten nicht filtern, um bestimmte Werte zu zählen. Die Countif-Funktion ist unerlässlich, um Ihr Dashboard vorzubereiten.

So verwenden Sie die SUMIF-Funktion in Excel | Dies ist eine weitere wesentliche Funktion des Dashboards. Dies hilft Ihnen, Werte unter bestimmten Bedingungen zusammenzufassen.