/ / Userform VBA di Excel

Userform VBA di Excel

Aggiungi i controlli | Mostra il form utente | Assegna i macro | Testare il modulo utente

Questo capitolo ti insegna come creare un Userform VBA di Excel. L'Userform che stiamo per creare appare come segue:

Userform VBA di Excel

Aggiungi i controlli

Per aggiungere i controlli al modulo utente, 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 i controlli elencati nella tabella seguente. 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 testo facendo clic su TextBox dalla casella degli strumenti. Successivamente, puoi trascinare una casella di testo sul modulo utente. Quando arrivi al telaio Car, ricorda di disegnare questa cornice prima di posizionare i due pulsanti di opzione.

4. Modificare i nomi e le didascalie dei controlli in base alla tabella seguente. I nomi sono utilizzati nel codice VBA di Excel. Le didascalie sono quelle che appaiono sullo schermo. È buona prassi cambiare i nomi dei controlli. Questo renderà il tuo codice più facile da leggere. Per modificare i nomi e le didascalie dei controlli, fare clic su Visualizza, Finestra Proprietà e fare clic su ciascun controllo.

Controllo Nome Didascalia
userform DinnerPlannerUserForm Dinner Planner
Casella di testo NameTextBox
Casella di testo PhoneTextBox
Casella di riepilogo CityListBox
Casella combinata DinnerComboBox
Casella di controllo DateCheckBox1 13 giugno
Casella di controllo DateCheckBox2 20 giugno
Casella di controllo DateCheckBox3 27 giugno
Telaio CarFrame Auto
Pulsante di opzione CarOptionButton1
Pulsante di opzione CarOptionButton2 No
Casella di testo MoneyTextBox
Pulsante di rotazione MoneySpinButton
Pulsante di comando OKButton ok
Pulsante di comando ClearButton Chiaro
Pulsante di comando CancelButton Annulla
7 etichette Non c'è bisogno di cambiare Nome :, Numero di telefono :, ecc.

Nota: una casella combinata è un elenco a discesa da cui un utente può selezionare un articolo o riempire la propria scelta. È possibile selezionare solo uno dei pulsanti di opzione.

Mostra il form utente

Per mostrare l'Userform, posiziona un pulsante di comando sul tuo foglio di lavoro e aggiungi la seguente riga di codice:

Private Sub CommandButton1_Click()

DinnerPlannerUserForm.Show

End Sub

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

1. Aprire il Visual Basic Editor.

2. Nell'Esplora progetti, fare clic con il tasto destro su DinnerPlannerUserForm e quindi fare clic su Visualizza codice.

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

4. Aggiungi le seguenti linee di codice:

Private Sub UserForm_Initialize()

"Empty NameTextBox
NameTextBox.Value = ""

"Empty PhoneTextBox
PhoneTextBox.Value = ""

"Empty CityListBox
CityListBox.Clear

"Fill CityListBox
With CityListBox
    .AddItem "San Francisco"
    .AddItem "Oakland"
    .AddItem "Richmond"
End With

"Empty DinnerComboBox
DinnerComboBox.Clear

"Fill DinnerComboBox
With DinnerComboBox
    .AddItem "Italian"
    .AddItem "Chinese"
    .AddItem "Frites and Meat"
End With

"Uncheck DataCheckBoxes

DateCheckBox1.Value = False
DateCheckBox2.Value = False
DateCheckBox3.Value = False

"Set no car as default
CarOptionButton2.Value = True

"Empty MoneyTextBox
MoneyTextBox.Value = ""

"Set Focus on NameTextBox
NameTextBox.SetFocus

End Sub

Spiegazione: le caselle di testo sono vuote, le caselle di riepilogo e le caselle combinate sono riempite, le caselle di controllo sono deselezionate, ecc.

Assegna i macro

Ora abbiamo creato la prima parte di Userform. Anche se sembra già pulito, non accadrà ancora nulla quando clicchiamo sui pulsanti di comando sul form utente.

1. Aprire il Visual Basic Editor.

2. Nell'Esplora progetti, fare doppio clic su DinnerPlannerUserForm.

3. Fare doppio clic sul pulsante di selezione Money.

4. Aggiungi la seguente riga di codice:

Private Sub MoneySpinButton_Change()

MoneyTextBox.Text = MoneySpinButton.Value

End Sub

Spiegazione: questa riga di codice aggiorna la casella di testo quando si utilizza il pulsante di selezione.

5. Fare doppio clic sul pulsante OK.

6. Aggiungi le seguenti linee di codice:

Private Sub OKButton_Click()

Dim emptyRow As Long

"Make Sheet1 active
Sheet1.Activate

"Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

"Transfer information
Cells(emptyRow, 1).Value = NameTextBox.Value
Cells(emptyRow, 2).Value = PhoneTextBox.Value
Cells(emptyRow, 3).Value = CityListBox.Value
Cells(emptyRow, 4).Value = DinnerComboBox.Value

If DateCheckBox1.Value = True Then Cells(emptyRow, 5).Value = DateCheckBox1.Caption

If DateCheckBox2.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox2.Caption

If DateCheckBox3.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox3.Caption

If CarOptionButton1.Value = True Then
    Cells(emptyRow, 6).Value = "Yes"
Else
    Cells(emptyRow, 6).Value = "No"
End If

Cells(emptyRow, 7).Value = MoneyTextBox.Value

End Sub

Spiegazione: per prima cosa, attiviamo Sheet1. Successivamente, determiniamo emptyRow. La variabile emptyRow è la prima riga vuota e aumenta ogni volta che viene aggiunto un record. Infine, trasferiamo le informazioni dal modulo utente alle colonne specifiche di emptyRow.

7. Fare doppio clic sul pulsante Cancella.

8. Aggiungere la seguente riga di codice:

Private Sub ClearButton_Click()

Call UserForm_Initialize

End Sub

Spiegazione: questa riga di codice chiama Sub UserForm_Initialize quando si fa clic sul pulsante Cancella.

9. Fare doppio clic sul pulsante Annulla.

10. Aggiungi la seguente riga di codice:

Private Sub CancelButton_Click()

Unload Me

End Sub

Spiegazione: questa riga di codice chiude Userform quando si fa clic sul pulsante Annulla.

Testare il modulo utente

Chiudere il Visual Basic Editor, immettere le etichette mostrate di seguito nella riga 1 e verificare l'Userform.

Risultato:

Testare il modulo utente

Leggi anche: