image

Wir wissen, wie mithilfe der Datenvalidierung ein kaskadierendes Dropdown-Menü in einem Arbeitsblatt erstellt wird. Aber wie erstellen wir eine kaskadierende Combobox-Dropdown-Liste im VBA-Benutzerformular? 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 für das Ereignis des Quellelements initialisieren. Wenn eine Combobox beispielsweise 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. Wenn eine Combobox von einer anderen Combobox abhängt, sollte sie abhängig von der Combobox jedes Mal geladen werden, wenn der Wert in der Combobox geändert wird.

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

ComboBox abhängig von einer anderen Combobox Erstellen Sie zwei Comboboxen. Zuerst sollte man die wenigen Namen der Länder auflisten.

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 Beschriftungen für Länder und Bundesstaaten und einer Befehlsschaltfläche zum Senden der Eingabe.

image

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

Doppelklicken Sie auf das Benutzerformular. Der Codierungsbereich in UserForm Object wird geöffnet. Wählen Sie nun im linken Dropdown-Menü das Benutzerformular aus. Wählen Sie dann im rechten Dropdown-Menü die Option Initialisieren.

image

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

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

Private Sub UserForm_Initialize()

countries = Array("India", "Nepal", "Bhutan", "Shree Lanka")

UserForm1.ComboBox1.List = states

End Sub

Wir haben unsere erste Combobox initialisiert. Wann immer Sie das Benutzerformular laden, ist die erste Combox mit dem Namen der Länder bereit.

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 die Combobox1 ihre Werte ändert. Dazu verwenden wir das Ereignis Combobox_AfterUpdate.

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

Schreiben Sie nun den folgenden Code:

Private Sub ComboBox1_AfterUpdate()

Select Case 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")

Case "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

image

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 erklärt „hier im Detail„.

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 vom Benutzer im Arbeitsblatt ausgewählte Land und Bundesland zu speichern.

Private Sub CommandButton1_Click()

country = ComboBox1.Value

State = ComboBox2.Value

ThisWorkbook.Worksheets("sheet1").Range("G1") = country

ThisWorkbook.Worksheets("sheet1").Range("H1") = State

Unload Me

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 load_userform-Code aus.

image

Wie funktioniert es?

Wenn Sie das Sub mit dem Code userform.show ausführen, führt der VBA die Ereignisse userform_initialize unmittelbar nach dem Ausführen des Befehls userform.show aus. Im Ereignis userform_intialize haben wir die erste Combobox mit einer Liste von Ländern 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 zum Überprüfen, welcher Wert vom Benutzer in combobox1 ausgewählt wird. Basierend auf diesem Wert wird das Statusarray festgelegt und die combobox2-Werte mit dem Statusarray initialisiert.

Also ja Leute, so erstellen Sie eine kaskadierende Combobox im VBA-Benutzerformular. 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.

Verwandte Artikel:

link: / Applications-Word-Outlook-in-VBA-Erste Schritte mit Excel-VBA-Benutzerformularen [Erste Schritte mit Excel VBA UserForms] | * Ich werde erklären, wie man ein Formular in Excel erstellt und wie man es verwendet VBA-Toolbox, wie man Benutzereingaben behandelt und schließlich die Benutzereingaben speichert. Wir werden diese Themen anhand eines Beispiels und einer Schritt-für-Schritt-Anleitung durchgehen.

link: / allgemeine-themen-in-vba-vba-variablen-in-excel [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 bestimmte Schlüsselwörter sind.

link: / allgemeine-themen-in-vba-excel-vba-variablenbereich [Excel VBA-Variablenbereich] | * 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 verfügt über Bereichsspezifizierer.

link: / Zellenbereiche-Zeilen-und-Spalten-in-vba-was-ist-der-Unterschied-zwischen-byref-und-byval-Argumenten-vba-Interview-Frage [ByRef- und ByVal-Argumente] | Wenn ein Argument als ByRef-Argument an ein anderes Sub oder eine andere Funktion übergeben wird, wird die Referenz der tatsächlichen Variablen gesendet. Alle Änderungen, die an der Kopie der Variablen vorgenommen werden, werden im ursprünglichen Argument wiedergegeben.

link: / files-arbeitsmappe-und-arbeitsblätter-in-vba-lösche-blätter-ohne-bestätigungs-aufforderungen-mit-vba-in-microsoft-excel [lösche blätter ohne bestätigungs-aufforderungen 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.

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Neue Arbeitsmappe mit VBA in Microsoft Excel 2016 hinzufügen und speichern] | 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 Operationen an dieser neuen Arbeitsmappe problemlos ausführen können. Wie Speichern, Schließen, Löschen usw. `link: / menüs-Symbolleisten-Statusleiste-in-vba-Anzeige-einer-Nachricht-in-der-Statusleiste-mit-vba-in-Microsoft-Excel [Anzeige einer Nachricht ein Die 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.

link: / allgemeine-themen-in-vba-ausschalten-warnwarnmeldungen-mit-vba-in-microsoft-excel [Warnmeldungen mit VBA in Microsoft Excel 2016 ausschalten] | * Dieser Code deaktiviert nicht nur VBA Warnungen, erhöht aber auch die Zeiteffizienz des Codes. Mal sehen, wie.

Beliebte Artikel:

link: / Tastatur-Formel-Verknüpfungen-50-Excel-Verknüpfungen-zur-Steigerung-Ihrer-Produktivität [50 Excel-Verknüpfungen zur Steigerung Ihrer Produktivität] | Werden Sie schneller bei Ihrer Aufgabe. Mit diesen 50 Verknüpfungen können Sie noch schneller in Excel arbeiten.

link: / formeln-und-funktionen-einführung-der-vlookup-funktion [Die VLOOKUP-Funktion in Excel] | Dies ist eine der am häufigsten verwendeten und beliebtesten Funktionen von Excel, mit der Werte aus verschiedenen Bereichen und Tabellen gesucht werden. link: / tips-countif-in-microsoft-excel [COUNTIF in Excel 2016] | Zählen Sie Werte mit Bedingungen, die diese erstaunliche Funktion verwenden. Sie müssen Ihre Daten nicht filtern, um bestimmte Werte zu zählen.

Die Countif-Funktion ist wichtig, um Ihr Dashboard vorzubereiten.

link: / excel-formel-und-funktion-excel-sumif-funktion [Verwendung der SUMIF-Funktion in Excel] | Dies ist eine weitere wichtige Funktion des Dashboards. Auf diese Weise können Sie Werte unter bestimmten Bedingungen zusammenfassen.