Loop attraverso controlli in Excel VBA
Con solo poche righe di codice, si può facilmente scorrere i controlli su un UserForm VBA di Excel. Il form ci accingiamo a creare look come segue:
Per creare questo form, eseguire i seguenti passaggi.
-
Aprire il Visual Basic Editor. Se il progetto Explorer non è visibile, fare clic su Visualizza, progetti.
-
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.
-
Aggiungere l’etichetta, caselle (prima nella parte superiore, il secondo sotto il primo, e così via) e 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 di dialogo facendo clic sul CheckBox dalla Casella degli strumenti. Successivamente, è possibile trascinare una casella di controllo sopra il Form utente.
-
È 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 form, etichette, caselle di controllo e pulsante di comando, fare clic su Visualizza, Finestra Proprietà e fare clic su ogni controllo.
-
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
Abbiamo creato la prima parte del form utente. Anche se sembra già ordinato, nulla accadrà ancora quando si clicca sul pulsante Cancella.
-
Aprire il Visual Basic Editor.
-
In Esplora progetti, fare doppio clic su UserForm1.
-
Fare doppio clic sul pulsante Cancella.
-
Aggiungere le seguenti righe di codice:
Private Sub CommandButton1_Click() Dim contr As control For Each contr In UserForm1.Controls If TypeName(contr) = "CheckBox" Then contr.Value = False End If Next End Sub
Spiegazione: Excel VBA scorre tutti i controlli al form utente. La funzione TypeName viene utilizzato per filtrare i controlli casella di controllo. Se un controllo casella di controllo, Excel VBA deseleziona la casella di controllo. contr è scelto a caso qui, è possibile utilizzare qualsiasi nome. Ricordarsi di fare riferimento a questo nome nel resto del codice.
Risultato quando si fa clic sul pulsante Cancella: