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:

Loop through Controls 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 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.

  2. È 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.

  3. 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.

  1. Aprire il Visual Basic Editor.

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

  3. Fare doppio clic sul pulsante Cancella.

  4. 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:

Loop through Controls Result