/ / Caselle combinate dipendenti VBA di Excel

Caselle combinate dipendenti VBA di Excel

Di seguito vedremo un programma in Excel VBA che crea un Userform che contiene caselle combinate dipendenti. L'Userform che stiamo per creare appare 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.

Caselle combinate dipendenti in VBA di Excel

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

Caselle combinate dipendenti in VBA di Excel

Per creare questo Userform, eseguire i seguenti passaggi.

1. Aprire il Visual Basic Editor. Se Project Explorer non è visibile, fai clic su Visualizza, Esplora progetti.

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

Impostazione della schermata Userform in Excel VBA

3. Aggiungi le caselle combinate (prima a sinistra, la seconda a destra) e il pulsante di comando. Una volta che questo è stato completato, il risultato dovrebbe essere coerente con l'immagine della forma utente mostrata in precedenza. Ad esempio, creare un controllo casella combinata facendo clic su ComboBox dalla casella degli strumenti. Successivamente, puoi trascinare una casella combinata sul modulo utente.

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

5. Per visualizzare Userform, posizionare un pulsante di comando nel foglio di lavoro e aggiungere la seguente riga di codice:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Ora creeremo Sub UserForm_Initialize. Quando si utilizza il metodo Show per Userform, questo sub verrà eseguito automaticamente.

6. Aprire il Visual Basic Editor.

7. Nell'Esplora progetti, fare clic con il pulsante destro su UserForm1 e quindi scegliere Visualizza codice.

8. Selezionare Userform dall'elenco a discesa a sinistra. Scegli Inizializza dall'elenco a discesa a destra.

9. Aggiungi le seguenti linee di codice:

Private Sub UserForm_Initialize()

With ComboBox1
    .AddItem "Animals"
    .AddItem "Sports"
    .AddItem "Food"
End With

End Sub

Spiegazione: Queste righe di codice riempiono la prima casella combinata.

Ora abbiamo creato la prima parte di Userform. Anche se sembra già pulito, non accadrà ancora nulla quando selezioniamo un oggetto dalla prima casella combinata.

10. Nell'Esplora progetti, fare doppio clic su UserForm1.

11. Fare doppio clic sulla prima casella combinata.

12. Aggiungi le seguenti linee 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 deve essere compilata la seconda casella combinata. Passa attraverso il nostro programma Select Case per saperne di più sulla struttura Select Case.

13. Fare doppio clic sul pulsante Importa.

14. Aggiungere la seguente riga di codice:

Private Sub CommandButton1_Click()

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

End Sub

Risultato:

Caselle combinate dipendenti in VBA di Excel

Leggi anche: