/ / Excel VBA Userform s viacerými stránkami

Excel VBA Userform s viacerými stránkami

Nižšie sa pozrieme na program v programe Excel VBA, ktorý vytvára Userform, ktorý obsahuje viac stránok. Tento používateľský formulár obsahuje aj obrázky.

Ovládanie viacerých stránok obsahuje dve strany. Na strane 1 môže používateľ vyplniť svoje osobné údaje. Na strane 2 môže používateľ uviesť, ktorý obraz má najviac rád.

Formulár používateľa Strana 1
Formulár používateľa Strana 2

Ak chcete vytvoriť tento Userform, vykonajte nasledujúce kroky.

1. Otvorte Editor jazyka. Ak nástroj Project Explorer nie je viditeľný, kliknite na položku Zobraziť, Project Explorer.

2. Kliknite na Insert, Userform. Ak sa panel nástrojov nezobrazí automaticky, kliknite na položku Zobraziť, panel s nástrojmi. Obrazovka by mala byť nastavená tak, ako je uvedené nižšie.

Nastavenie obrazovky používateľa v programe Excel VBA

3. Pridajte ovládací prvok na viacerých stranách, štítky, textové polia (prvý hore, druhý pod prvý), rámček, voľby (prvý vľavo, druhý vpravo), zoznam, ovládací prvok a príkazové tlačidlo. Po dokončení tohto výsledku by mal byť výsledok konzistentný s prázdnou verziou vyššie uvedenej User Formy. Napríklad vytvorte ovládanie viacerých stránok kliknutím na viac stránok z panelu nástrojov. Potom môžete pretiahnuť ovládací prvok viacerých stránok na Userform. Keď dorazíte do rámčeka Pohlavie, nezabudnite nakresliť tento rám najprv skôr, ako v ňom umiestnite dve voľby.

4. Môžete zmeniť názvy a popisy ovládacích prvkov. Názvy sa používajú v kóde programu Excel VBA. Titulky sú tie, ktoré sa zobrazujú na vašej obrazovke. Správna prax je zmeniť mená ovládacích prvkov, nie je to však potrebné, pretože v tomto príklade máme len niekoľko kontrol. Ak chcete zmeniť popis položiek Userform, Viacstránky, štítky, rámček, tlačidlá možností a príkazového tlačidla, kliknite na položku Zobraziť, okno Vlastnosti a kliknite na každý ovládací prvok.

5. Ak chcete zobraziť Userform, umiestnite do pracovného hárka príkazové tlačidlo a pridajte nasledujúci riadok kódu:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Teraz vytvoríme Sub UserForm_Initialize. Ak použijete metódu Show for Userform, táto podstata sa automaticky vykoná.

6. Otvorte Editor jazyka.

7. V programe Project Explorer kliknite pravým tlačidlom na UserForm1 a potom kliknite na View Code.

8. V ľavom rozbaľovacom zozname vyberte položku Userform. V pravom rozbaľovacom zozname vyberte možnosť Inicializovať.

9. Pridajte nasledujúce riadky kódu:

Private Sub UserForm_Initialize()

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

End Sub

Vysvetlenie: zoznam na strane 2 sa vyplní.

Teraz sme vytvorili prvú časť Userform. Aj keď to vyzerá dobre, nič sa nestane, keď vyberieme položku zo zoznamu alebo keď klikneme na tlačidlo OK.

10. Stiahnite si obrázky (v pravej časti tejto stránky) a pridajte ich do "C: test"

11. V programe Project Explorer dvakrát kliknite na UserForm1.

12. Dvakrát kliknite na zoznam.

13. Pridajte nasledujúce riadky kódu:

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

Vysvetlenie: tieto riadky kódu načítajú obrázok v závislosti od vybranej položky v zozname.

14. Dvakrát kliknite na tlačidlo OK.

15. Pridajte nasledujúce riadky kódu:

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

Vysvetlenie: najprv aktivujeme list1. Ďalej určujeme emptyRow. Premenná emptyRow je prvý prázdny riadok a zvyšuje sa pri každom pridaní záznamu. Ďalej prenesieme informácie z Userform do konkrétnych stĺpcov emptyRow. Nakoniec uzatvárame Userform.

16. Ukončite editor Visual Basic, zadajte nižšie uvedené štítky do riadku 1 a otestujte Userform.

výsledok:

Otestujte Formu používateľa

Tiež si prečítajte: