/ / Userform VBA di Excel con più pagine

Userform VBA di Excel con più pagine

Di seguito vedremo un programma in Excel VBA che crea un Userform che contiene più pagine. Questo userform contiene anche immagini.

Il controllo multipagina contiene due pagine. A pagina 1, l'utente può inserire le sue informazioni personali. A pagina 2, l'utente può indicare quale pittura gli / le piace di più.

Userform Pagina 1
Userform Pagina 2

Per creare questo Userform, 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 il controllo multipagina, etichette, caselle di testo (prima nella parte superiore, la seconda sotto la prima), cornice, pulsanti di opzione (prima a sinistra, la seconda a destra), casella di riepilogo, controllo immagine e pulsante di comando. Una volta che questo è stato completato, il risultato dovrebbe essere coerente con la versione vuota del modulo utente mostrato in precedenza. Ad esempio, creare un controllo multipagina facendo clic su Multipagina dalla casella degli strumenti. Successivamente, puoi trascinare un controllo multipagina sul modulo utente. Quando arrivi al frame Gender, ricorda di disegnare questa cornice prima di posizionare i due pulsanti di opzione.

4. È possibile modificare i nomi e le didascalie dei controlli. I nomi sono utilizzati nel codice VBA di Excel. Le didascalie sono quelle che appaiono sullo schermo. È buona norma cambiare i nomi dei controlli, ma qui non è necessario perché in questo esempio abbiamo solo alcuni controlli. Per modificare la didascalia delle forme utente, schede multipagina, etichette, cornice, pulsanti opzione e pulsante di comando, fare clic su Visualizza, Finestra Proprietà e fare clic su ciascun controllo.

5. Per visualizzare Userform, posizionare un pulsante di comando nel foglio di lavoro e aggiungere la seguente riga di codice:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

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

6. Aprire il Visual Basic Editor.

7. Nell'Esplora progetti, fare clic con il pulsante destro su UserForm1 e quindi scegliere Visualizza codice.

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

9. Aggiungi le seguenti linee di codice:

Private Sub UserForm_Initialize()

With ListBox1
    .AddItem "Mountains"
    .AddItem "Sunset"
    .AddItem "Beach"
    .AddItem "Winter"
End With

End Sub

Spiegazione: la casella di riepilogo a pagina 2 verrà riempita.

Ora abbiamo creato la prima parte di Userform. Anche se sembra già pulito, non accadrà ancora nulla quando selezioniamo un elemento dalla casella di riepilogo o quando clicchiamo sul pulsante OK.

10. Scarica le immagini (lato destro di questa pagina) e aggiungile a "C: test"

11. Nell'Esplora progetti, fare doppio clic su UserForm1.

12. Fare doppio clic sulla casella di riepilogo.

13. Aggiungi le seguenti linee di codice:

Private Sub ListBox1_Click()

If ListBox1.ListIndex = 0 Then
    Image1.Picture = LoadPicture("C:testMountains.jpg")
End If

If ListBox1.ListIndex = 1 Then
    Image1.Picture = LoadPicture("C:testSunset.jpg")
End If

If ListBox1.ListIndex = 2 Then
    Image1.Picture = LoadPicture("C:testBeach.jpg")
End If

If ListBox1.ListIndex = 3 Then
    Image1.Picture = LoadPicture("C:testWinter.jpg")
End If

End Sub

Spiegazione: queste righe di codice caricano un'immagine in base all'elemento selezionato nella casella di riepilogo.

14. Fare doppio clic sul pulsante OK.

15. Aggiungere le seguenti righe di codice:

Private Sub CommandButton1_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 = TextBox1.Value
Cells(emptyRow, 2).Value = TextBox2.Value

If OptionButton1.Value = True Then
    Cells(emptyRow, 3).Value = "Male"
Else
    Cells(emptyRow, 3).Value = "Female"
End If

Cells(emptyRow, 4).Value = ListBox1.Value

"Close Userform
Unload Me

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. Successivamente, trasferiamo le informazioni dal modulo utente alle colonne specifiche di emptyRow. Infine, chiudiamo l'Userform.

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