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:

Excel VBA Userform

Aggiungere i controlli

Per aggiungere i controlli al form utente, eseguire le seguenti operazioni.

  1. Aprire il collegamento : / VBA-Create-a-macro # visual-basic-editore [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 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.

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

  1. Aprire il collegamento : / VBA-Create-a-macro # visual-basic-editore [Visual Basic Editor].

  2. Nella Gestione progetti, fare clic destro su DinnerPlannerUserForm e quindi fare clic su Visualizza codice.

  3. Scegliere Userform dall’elenco a discesa sinistra. Scegli inizializzazione dall’elenco a discesa a destra.

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

  1. Aprire il collegamento : / VBA-Create-a-macro # visual-basic-editore [Visual Basic Editor].

  2. Nella Gestione progetti, fare doppio clic su DinnerPlannerUserForm.

  3. Fare doppio clic sul pulsante di selezione di denaro.

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

  1. Fare doppio clic sul pulsante OK.

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

  1. Fare doppio clic sul pulsante Cancella.

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

  1. Fare doppio clic sul pulsante Annulla.

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

Test the Userform