Excel VBA Userform
Collegamento: # add-controlli [Aggiungere i controlli] | Mostra il form | Collegamento: # assign-macro [assegnare la Macro] | Test il form
Questo capitolo insegna come creare un UserForm VBA di Excel. Il form ci accingiamo a creare look come segue:
Aggiungere i controlli
Per aggiungere i controlli al form utente, eseguire le seguenti operazioni.
-
Aprire il collegamento
: / VBA-Create-a-macro # visual-basic-editore [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 controlli elencati nella tabella sottostante. Una volta che questo è stato completato, il risultato deve essere coerente con l’immagine del Userform mostrato in precedenza. Ad esempio, creare un testo di controllo di dialogo facendo clic sul TextBox dalla casella degli strumenti. Successivamente, è possibile trascinare una casella di testo sopra il Form utente. Quando si arriva al telaio Car, ricordatevi di disegnare questo fotogramma prima prima di inserire i due pulsanti di opzione a esso.
-
Modificare i nomi e le didascalie dei controlli in base alla seguente tabella. I nomi sono utilizzati nel codice VBA di Excel. Le didascalie sono quelli che appaiono sullo schermo. È buona norma cambiare i nomi dei controlli. Questo renderà il codice più facile da leggere. Per cambiare i nomi e le didascalie dei controlli, fare clic su Visualizza, Finestra Proprietà e fare clic su ogni controllo.
Control |
Name |
Caption |
Userform |
DinnerPlannerUserForm |
Dinner Planner |
Text Box |
NameTextBox |
|
Text Box |
PhoneTextBox |
|
List Box |
CityListBox |
|
Combo Box |
DinnerComboBox |
|
Check Box |
DateCheckBox1 |
June 13th |
Check Box |
DateCheckBox2 |
June 20th |
Check Box |
DateCheckBox3 |
June 27th |
Frame |
CarFrame |
Car |
Option Button |
CarOptionButton1 |
Yes |
Option Button |
CarOptionButton2 |
No |
Text Box |
MoneyTextBox |
|
Spin Button |
MoneySpinButton |
|
Command Button |
OKButton |
OK |
Command Button |
ClearButton |
Clear |
Command Button |
CancelButton |
Cancel |
7 Labels |
No need to change |
Name:, Phone Number:, etc. |
Nota: una casella combinata è un elenco a discesa dal quale un utente può selezionare un elemento o un riempimento nel suo / sua scelta. Solo uno dei pulsanti di opzione può essere selezionata.
Mostra il form
Per mostrare il form, inserire un link: / VBA-Create-a-macro # Comando-tasto [pulsante di comando]
nel foglio di lavoro e aggiungere la seguente riga di codice:
Private Sub CommandButton1_Click() DinnerPlannerUserForm.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 collegamento
: / VBA-Create-a-macro # visual-basic-editore [Visual Basic Editor]
. -
Nella Gestione progetti, fare clic destro su DinnerPlannerUserForm 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() '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 vengono svuotati, caselle di riepilogo e caselle combinate sono pieni, caselle di controllo siano deselezionate, ecc
Assegnare la macro
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.
-
Aprire il collegamento
: / VBA-Create-a-macro # visual-basic-editore [Visual Basic Editor]
. -
Nella Gestione progetti, fare doppio clic su DinnerPlannerUserForm.
-
Fare doppio clic sul pulsante di selezione di denaro.
-
Aggiungere 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.
-
Fare doppio clic sul pulsante OK.
-
Aggiungere il seguente righe 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: prima, attiviamo Sheet1. Successivamente, determiniamo emptyRow. L’emptyRow variabile è la prima riga vuota e aumenta ogni volta che viene aggiunto un record. Infine, abbiamo trasferire le informazioni dal Userform alle colonne specifiche di emptyRow.
-
Fare doppio clic sul pulsante Cancella.
-
Aggiungere la seguente riga di codice:
Private Sub ClearButton_Click() Call UserForm_Initialize End Sub
Spiegazione: questa riga di codice chiama l’UserForm_Initialize secondaria quando si fa clic sul pulsante Cancella.
-
Fare doppio clic sul pulsante Annulla.
-
Aggiungere la seguente riga di codice:
Private Sub CancelButton_Click() Unload Me End Sub
Spiegazione: questa riga di codice chiude il form quando si fa clic sul pulsante Annulla.
Prova il form
Uscire dal Visual Basic Editor, immettere le etichette mostrate di seguito in riga 1 e testare il form.
Risultato: