/ / Più selezioni della casella di riepilogo in VBA di Excel

Più selezioni della casella di riepilogo in VBA di Excel

Il Proprietà MultiSelect nel Excel VBA consente a un utente di selezionare più elementi in una casella di riepilogo. L'Userform che stiamo per creare appare come segue:

Più selezioni della casella di riepilogo 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 di riepilogo (prima a sinistra, la seconda a destra), i pulsanti di comando, le caselle di controllo (prima a sinistra, la seconda a destra), i pulsanti cornice e opzione (prima in alto, la seconda sotto la prima , e così via). 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 di riepilogo facendo clic su ListBox dalla casella degli strumenti. Successivamente, puoi trascinare una casella di riepilogo sul modulo utente. Quando arrivi al riquadro "Seleziona tipo", ricorda di disegnare questa cornice prima di posizionare i tre pulsanti di opzione al suo interno.

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 di Userform, pulsanti di comando, caselle di controllo, pulsanti di cornice e opzioni, 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. In primo luogo, dichiarare la variabile i di tipo Integer. Dichiarare la variabile nella sezione General Declarations (nella parte superiore del codice). In questo modo devi dichiarare la variabile una sola volta e puoi usarle in più sottotitoli.

Dim i As Integer

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

10. Aggiungi le seguenti linee di codice:

Private Sub UserForm_Initialize()

With ListBox1
    .AddItem "Sales"
    .AddItem "Production"
    .AddItem "Logistics"
    .AddItem "Human Resources"
End With

OptionButton3.Value = True

End Sub

Spiegazione: la prima casella di elenco sarà riempita e il terzo pulsante di opzione è impostato come predefinito.

Ora abbiamo creato la prima parte di Userform. Anche se sembra già pulito, non accadrà ancora nulla quando clicchiamo sui pulsanti di comando o sugli altri controlli.

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

12. Fare doppio clic sul pulsante Aggiungi.

13. Aggiungi le seguenti linee di codice:

Private Sub CommandButton1_Click()

For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then ListBox2.AddItem ListBox1.List(i)
Next i

End Sub

Spiegazione: VBA di Excel scorre nella prima casella di riepilogo (elenca il numero di indice di zero (0) per il primo elemento nell'elenco) e, se selezionato, aggiunge l'elemento alla seconda casella di riepilogo.

14. Fare doppio clic sul pulsante Rimuovi.

15. Aggiungere le seguenti righe di codice:

Private Sub CommandButton2_Click()

Dim counter As Integer
counter = 0

For i = 0 To ListBox2.ListCount - 1
    If ListBox2.Selected(i - counter) Then
        ListBox2.RemoveItem (i - counter)
        counter = counter + 1
    End If
Next i

CheckBox2.Value = False

End Sub

Spiegazione: VBA di Excel scorre nella seconda casella di riepilogo e, se selezionato, rimuove l'elemento. La variabile contatore tiene traccia del numero di articoli rimossi.

16. Fare doppio clic sul primo pulsante di opzione.

17. Aggiungi le seguenti linee di codice:

Private Sub OptionButton1_Click()

ListBox1.MultiSelect = 0
ListBox2.MultiSelect = 0

End Sub

18. Fare doppio clic sul secondo pulsante di opzione.

19. Aggiungi le seguenti linee di codice:

Private Sub OptionButton2_Click()

ListBox1.MultiSelect = 1
ListBox2.MultiSelect = 1

End Sub

20. Fare doppio clic sul terzo pulsante di opzione.

21. Aggiungi le seguenti linee di codice:

Private Sub OptionButton3_Click()

ListBox1.MultiSelect = 2
ListBox2.MultiSelect = 2

End Sub

Spiegazione: l'impostazione "Seleziona tipo" può essere selezionata facendo clic sui pulsanti di opzione. L'immagine del modulo utente mostrato in precedenza fornisce una descrizione di ciascuna impostazione. Invece di configurare questa impostazione in fase di esecuzione, è anche possibile configurare questa impostazione in fase di progettazione. Per ottenere ciò, fare clic con il pulsante destro del mouse su un controllo casella di elenco, quindi fare clic su Proprietà. Impostare la proprietà MultiSelect su 0 - fmMultiSelectSingle, 1 - fmMultiSelectMulti o 2 - fmMultiSelectExtented.

22. Fare doppio clic sulla prima casella di controllo.

23. Aggiungi le seguenti linee di codice:

Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = True
    Next i
End If

If CheckBox1.Value = False Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = False
    Next i
End If

End Sub

Spiegazione: selezionando la prima casella di controllo, tutti gli elementi della prima casella di riepilogo possono essere selezionati / deselezionati.

24. Fare doppio clic sulla seconda casella di controllo per aggiungere le stesse linee di codice. Sostituisci solo CheckBox1 con CheckBox2 e ListBox1 con ListBox2.

Leggi anche: