Excel VBA multicolonna Casella combinata
Di seguito vedremo un programma in Excel VBA che crea un form contenente una casella combinata a più colonne.
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 i pulsanti di etichetta, casella combinata e 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.
-
È 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 dei tasti form, di etichette e 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
Ora stiamo andando a creare l’UserForm_Initialize Sub. Quando si utilizza il metodo Show per il form, verrà automaticamente eseguito questo sub.
-
Aprire il Visual Basic Editor.
-
In Esplora progetti, fare clic destro su UserForm1 e quindi fare clic su Visualizza codice.
-
Scegliere Userform dall’elenco a discesa sinistra. Scegli inizializzazione dall’elenco a discesa a destra.
-
Aggiungere le seguenti righe di codice:
Private Sub UserForm_Initialize() ComboBox1.ColumnCount = 2 Dim Films(1 To 5, 1 To 2) As String Dim i As Integer, j As Integer Films(1, 1) = "Lord of the Rings" Films(2, 1) = "Speed" Films(3, 1) = "Star Wars" Films(4, 1) = "The Godfather" Films(5, 1) = "Pulp Fiction" Films(1, 2) = "Adventure" Films(2, 2) = "Action" Films(3, 2) = "Sci-Fi" Films(4, 2) = "Crime" Films(5, 2) = "Drama" ComboBox1.List = Films End Sub
Spiegazione: La prima riga di codice imposta il numero di colonne della casella combinata a 2. Invece di impostare il numero di colonne in fase di esecuzione, è anche possibile configurare questa impostazione in fase di progettazione. Per raggiungere questo obiettivo, tasto destro del mouse sul controllo casella combinata, fare clic su Proprietà e impostare la proprietà ColumnCount su 2. Avanti, dichiariamo e inizializzare una matrice bidimensionale. L’ultima riga di codice assegna la matrice alla casella combinata.
Abbiamo creato la prima parte del form utente. Anche se sembra già ordinato, nulla accadrà ancora quando si clicca sui pulsanti di comando al form utente.
-
In Esplora progetti, fare doppio clic su UserForm1.
-
Fare doppio clic sul pulsante OK.
-
Aggiungere le seguenti righe di codice:
Private Sub CommandButton1_Click() Unload Me MsgBox "You selected " & ComboBox1.Value On Error Resume Next MsgBox "You like " & ComboBox1.Column(1) & " movies" End Sub
Nota: queste righe di codice chiudono l’UserForm VBA di Excel e visualizzare la voce e genere selezionato. L’ ‘On Error Resume Next’ affermazione ignora l’errore quando i riempimenti utente nella sua / il suo proprio film (in questo caso non v’è alcun genere disponibili).
-
Fare doppio clic sul pulsante Annulla.
-
Aggiungere il seguente riga di codice:
Private Sub CommandButton2_Click() Unload Me End Sub
Risultato quando si seleziona Velocità e fare clic su OK.