/ / Excel VBA felhasználói formátum több oldallal

Excel VBA Userform több oldalas

Az alábbiakban egy Excel VBA programot fogunk megnézni, amely több oldalt tartalmazó Userformot hoz létre. Ez a felhasználói formátum is tartalmaz képeket.

A többoldalas vezérlés két oldalt tartalmaz. Az 1. oldalon a felhasználó kitölti személyes adatait. A 2. oldalon a felhasználó jelezheti, hogy melyik festményt szereti legjobban.

Userform Page 1
Userform Page 2

A Userform létrehozásához hajtsa végre a következő lépéseket.

1. Nyissa meg a Visual Basic Editor alkalmazást. Ha a Project Explorer nem látható, kattintson a Nézet, a Project Explorer elemre.

2. Kattintson a Beszúrás, Felhasználóformátum elemre. Ha az Eszköztár nem jelenik meg automatikusan, kattintson a Nézet, Eszköztár elemre. A képernyő beállítása az alábbiak szerint történik.

Userform képernyőbeállítás az Excel VBA-ban

3. Adja hozzá a többoldalas vezérlőt, a címkéket, a szövegdobozokat (először a tetején, az első alatti második), a keret, az opciógombokat (balra, a második jobb oldalon), a listán, a képvezérlő és a parancsgombot. Miután ez befejeződött, az eredménynek összhangban kell lennie a korábban bemutatott Userform üres verziójával. Például, hozzon létre egy Többoldalas vezérlőt az Eszköztáron található Többoldalas elemre kattintva. Ezután húzza a Multipage vezérlőt a Userformon. Ha megérkezik a Nemek közötti keretre, ne felejtse el először rajzolni ezt a keretet, mielőtt a két opciógombot elhelyezné.

4. Megváltoztathatja a vezérlők nevét és feliratait. A neveket az Excel VBA kódban használják. Feliratok azok, amelyek a képernyőn jelennek meg. Jó gyakorlat a vezérlők nevének megváltoztatása, de itt nem szükséges, mert ebben a példában csak néhány kontroll van. A Felhasználóformátum, a Többoldalas lapok, a címkék, a keret, az opcionális gombok és a parancsgomb feliratának megváltoztatásához kattintson a Nézet, a Tulajdonságok ablakra, és kattintson az egyes vezérlőkre.

5. A Userform megjelenítéséhez helyezze a parancsgombot a munkalapra, és adja hozzá a következő kódot:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Most létrehozzuk a Sub UserForm_Initialize-t. Amikor a Userform metódust használja, ez a rész automatikusan végrehajtásra kerül.

6. Nyissa meg a Visual Basic Editor alkalmazást.

7. A Project Explorerben kattintson jobb gombbal a UserForm1-re, majd kattintson a View Code (Kód megtekintése) parancsra.

8. A bal oldali legördülő listáról válassza a Userform (Felhasználóformátum) lehetőséget. Válassza az Initialize lehetőséget a jobb legördülő listából.

9. Adja hozzá a következő kódsorokat:

Private Sub UserForm_Initialize()

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

End Sub

Magyarázat: a 2. oldalon lévő listakód kitöltése.

Most létrehoztuk a Userform első részét. Bár már szépnek tűnik, semmi sem fog történni, amikor kiválasztunk egy elemet a listából vagy amikor az OK gombra kattintunk.

10. Töltse le a képeket (az oldal jobb oldalán), és adja hozzá a "C: teszt"

11. A Project Explorer programban kattintson duplán a UserForm1-re.

12. Kattintson duplán a listán.

13. Adja hozzá a következő kódsorokat:

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

Magyarázat: ezek a kódsorok a listán szereplő elemtől függően betöltenek egy képet.

14. Kattintson duplán az OK gombra.

15. Adja hozzá a következő kódsorokat:

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

Magyarázat: először aktiváljuk a Sheet1-et. Ezután meghatározzuk az emptyRow értéket. Az emptyRow változó az első üres sor, amely minden rekord hozzáadásakor növekszik. Ezt követően az Userform-ból az adatokat az emptyRow konkrét oszlopaira továbbítjuk. Végül lezárjuk a Userform-ot.

16. Lépjen ki a Visual Basic Editorból, írja be az alább látható címkéket az 1. sorba, és próbálja meg a Userform-ot.

Eredmény:

Vizsgálja meg a használati utasítást

Szintén olvasható: