/ / Excel VBA Brugerformular med flere sider

Excel VBA Brugerformular med flere sider

Nedenfor vil vi se på et program i Excel VBA, der opretter en brugerformular, der indeholder flere sider. Denne brugerform indeholder også billeder.

Multipakontrollen indeholder to sider. På side 1 kan brugeren udfylde sine personlige oplysninger. På side 2 kan brugeren angive hvilket maleri han / hun kan lide mest.

Brugerformular Side 1
Brugerformular Page 2

For at oprette denne brugerformular, udfør følgende trin.

1. Åbn Visual Basic Editor. Hvis Project Explorer ikke er synlig, skal du klikke på Vis, Project Explorer.

2. Klik på Indsæt, Brugerformular. Hvis værktøjskassen ikke vises automatisk, skal du klikke på Vis, Værktøjskasse. Din skærm skal opsættes som nedenfor.

Brugerform Screen Setup i Excel VBA

3. Tilføj flertagskontrollen, etiketterne, tekstbokse (først øverst, den anden under den første), ramme, valgknapper (først til venstre, anden til højre), listefelt, billedstyring og kommandoknap. Når dette er gennemført, skal resultatet være i overensstemmelse med den tomme version af den tidligere viste brugerformular. For eksempel opret en Multipage kontrol ved at klikke på Multipage fra Toolbox. Dernæst kan du trække en Multipage-kontrol på Brugerformularen. Når du kommer til kønsrammen, skal du huske at tegne denne ramme først, inden du placerer de to valgknapper i den.

4. Du kan ændre navnene og teksten på kontrollerne. Navne bruges i Excel VBA-koden. Undertekster er dem, der vises på din skærm. Det er god praksis at ændre navnene på kontrollerne, men det er ikke nødvendigt her, fordi vi kun har få kontroller i dette eksempel. Hvis du vil ændre billedteksten til brugerformularen, flertallet faner, etiketter, ramme, valgknapper og kommandoknap, skal du klikke på Vis, Egenskaber Vindue og klikke på hver kontrol.

5. For at vise brugerformularen skal du placere en kommandoknap på dit regneark og tilføje følgende kode linje:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Vi skal nu oprette Sub UserForm_Initialize. Når du bruger visningsmetoden til brugerformularen, udføres denne under automatisk.

6. Åbn Visual Basic Editor.

7. I Project Explorer skal du højreklikke på UserForm1 og derefter klikke på View Code.

8. Vælg Brugerform fra den venstre rullemenu. Vælg Initialize fra den højre rulleliste.

9. Tilføj følgende kodelinjer:

Private Sub UserForm_Initialize()

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

End Sub

Forklaring: listefeltet på side 2 bliver udfyldt.

Vi har nu oprettet den første del af brugerformularen. Selv om det ser pænt ud, sker der intet endnu, når vi vælger et emne fra listefeltet eller når vi klikker på knappen OK.

10. Download billederne (højre side af denne side) og tilføj dem til "C: test"

11. Dobbeltklik på UserForm1 i Project Explorer.

12. Dobbeltklik på listeboksen.

13. Tilføj følgende kode linjer:

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

Forklaring: Disse kodelinjer indlæser et billede afhængigt af det valgte emne i listefeltet.

14. Dobbeltklik på OK-knappen.

15. Tilføj følgende kode linjer:

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

Forklaring: Først aktiverer vi Sheet1. Dernæst bestemmer vi emptyRow. Variabel emptyRow er den første tomme række og øges hver gang en post tilføjes. Derefter overfører vi oplysningerne fra brugerformularen til de specifikke kolonner af emptyRow. Endelig lukker vi brugerformularen.

16. Afslut Visual Basic Editor, indtast etiketterne vist nedenfor i række 1 og test brugerformularen.

Resultat:

Test brugerformularen

Læs også: