Di seguito vedremo un programma in Excel VBA che crea un form che contiene caselle combinate dipendenti. Il form ci accingiamo a creare look come segue:

L’utente seleziona Animali da un elenco a discesa. Di conseguenza, l’utente può selezionare un animale da un secondo elenco a discesa.

Dependent Combo Boxes in Excel VBA

L’utente seleziona Sports da un elenco a discesa. Di conseguenza, l’utente può selezionare uno sport da un secondo elenco a discesa.

Dependent Combo Boxes in Excel VBA

Per creare questo form, eseguire i seguenti passaggi.

  1. Aprire il Visual Basic Editor. Se il progetto Explorer non è visibile, fare clic su Visualizza, progetti.

  2. Fare clic su Inserisci, Userform. Se la Casella degli strumenti non viene visualizzata automaticamente, fare clic su Visualizza, Strumenti. Lo schermo dovrebbe essere impostato come di seguito.

Userform Screen Setup in Excel VBA

  1. Aggiungere le caselle combinate (primo a sinistra, il secondo a destra) e il pulsante di comando. Una volta che questo è stato completato, il risultato deve essere coerente con l’immagine del Userform mostrato in precedenza. Ad esempio, creare un controllo casella combinata facendo clic sul ComboBox dalla Casella degli strumenti.

Successivamente, è possibile trascinare una casella combinata al form utente.

  1. È possibile modificare i nomi e le didascalie dei controlli. I nomi sono utilizzati nel codice VBA di Excel. Le didascalie sono quelli che appaiono sullo schermo. È buona norma cambiare i nomi dei controlli, ma non è necessario qui perché abbiamo solo un paio di controlli in questo esempio. Per modificare la didascalia del pulsante di form e di comando, fare clic su Visualizza, Finestra Proprietà e fare clic su ogni controllo.

  2. Per mostrare il form, inserire un pulsante di comando nel foglio di lavoro e aggiungere la riga di codice seguente:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Ora stiamo andando a creare l’UserForm_Initialize Sub. Quando si utilizza il metodo Show per il form, verrà automaticamente eseguito questo sub.

  1. Aprire il Visual Basic Editor.

  2. In Esplora progetti, fare clic destro su UserForm1 e quindi fare clic su Visualizza codice.

  3. Scegliere Userform dall’elenco a discesa sinistra. Scegli inizializzazione dall’elenco a discesa a destra.

  4. Aggiungere le seguenti righe di codice:

Private Sub UserForm_Initialize()

With ComboBox1

.AddItem "Animals"

.AddItem "Sports"

.AddItem "Food"

End With

End Sub

Spiegazione: Queste linee di codice riempire la prima casella combinata.

Abbiamo creato la prima parte del form utente. Anche se sembra già ordinato, nulla accadrà ancora quando si seleziona un elemento dalla prima casella combinata.

  1. In Esplora progetti, fare doppio clic su UserForm1.

  2. Fare doppio clic sulla prima casella combinata.

  3. Aggiungere le seguenti righe di codice:

Private Sub ComboBox1_Change()

Dim index As Integer

index = ComboBox1.ListIndex

ComboBox2.Clear

Select Case index

Case Is = 0

With ComboBox2

.AddItem "Dog"

.AddItem "Cat"

.AddItem "Horse"

End With

Case Is = 1

With ComboBox2

.AddItem "Tennis"

.AddItem "Swimming"

.AddItem "Basketball"

End With

Case Is = 2

With ComboBox2

.AddItem "Pancakes"

.AddItem "Pizza"

.AddItem "Chinese"

End With

End Select

End Sub

Spiegazione: Excel VBA utilizza il valore dell’indice variabile per testare ogni successiva istruzione Case per vedere con quali elementi la seconda casella combinata deve essere riempito. Passare attraverso il nostro link : / VBA-esempi-Select-Case [Select Case]

programma per imparare di più sulla struttura Select Case.

  1. Fare doppio clic sul pulsante Importa.

  2. Aggiungere il seguente riga di codice:

Private Sub CommandButton1_Click()

Range("A1").Value = ComboBox2.Value

End Sub

Risultato:

Dependent Combo Boxes in Excel VBA