/ / Excel VBA Interactive Userform

Excel VBA Interactive Userform

Alla tarkastelemme ohjelmaa Excel VBA joka luo interaktiivinen Userform. Käyttäjäformaatti, jonka aiomme luoda, näyttää seuraavaa:

Excel VBA Interactive Userform

Selitys: kun annat arvon ID-tekstiruutuun, Excel VBA lataa vastaavan tietueen. Kun napsautat Muokkaa / Lisää-painiketta, Excel VBA muokkaa arkistoa tai lisää tietueen, kun tunnusta ei vielä ole. Tyhjennä-painike tyhjentää kaikki tekstilaatikot. Sulje-painike sulkee käyttäjän muodon.

Tee tämä Käyttäjäluettelo seuraavasti.

1. Avaa Visual Basic -editori. Jos Project Explorer ei ole näkyvissä, valitse View, Project Explorer.

2. Napsauta Insert, Userform. Jos työkalupakki ei tule näkyviin automaattisesti, valitse Näytä, työkalupakki. Näyttösi on määritettävä alla.

Userform-näytön asetukset Excel VBA: ssa

3. Lisää etiketit, tekstilaatikot (ensin yläosassa, toinen alla ensimmäisen ja niin edelleen) ja komentopainikkeet. Kun tämä on saatu päätökseen, tuloksen on oltava johdonmukainen aikaisemmin esitetyn käyttäjätiedon kuvan kanssa. Luo esimerkiksi tekstilaatikon ohjaus klikkaamalla Toolbox-työkalua. Seuraavaksi voit vetää tekstiruudun Userform-muodossa.

4. Voit muuttaa ohjaimien nimeä ja kuvatekstejä. Nimet käytetään Excel VBA -koodissa. Kuvatekstit ovat niitä, jotka näkyvät näytölläsi. On hyvä käytäntö muuttaa ohjaimien nimet, mutta se ei ole tarpeen tässä, koska tässä esimerkissä on vain muutama valvonta. Voit muuttaa tarrojen, tekstiruutujen ja komentopainikkeiden otsikkoa valitsemalla Näytä, Ominaisuudet-ikkuna ja napsauttamalla jokaista ohjausta.

5. Kun haluat näyttää Userform, aseta komentokehote laskentatauluun ja lisää seuraava koodirivi:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Aiomme nyt luoda Sub UserForm_Initialize. Kun käytät User-muodon Show-menetelmää, tämä osa suoritetaan automaattisesti.

6. Avaa Visual Basic -editori.

7. Napsauta Project Explorer -ohjelmaa hiiren kakkospainikkeella UserForm1 ja sen jälkeen Näytä koodi.

8. Valitse Käyttäjätunnus vasemmalta avattavasta luettelosta. Valitse avattavasta oikeasta alasvetovalikosta Aloita.

9. Lisää seuraava koodirivi:

Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub

Selitys: tämä koodirivi asettaa tarkennuksen ensimmäiseen tekstiruutuun, koska se on silloin, kun haluamme aloittaa, kun Userform on ladattu.

Olemme nyt luoneet Userformin ensimmäisen osan. Vaikka se näyttää siistinä jo, mikään ei tapahdu vielä, kun annamme arvon ID-tekstiruutuun tai kun napsautamme jotain komentopainikkeista.

10. Napsauta Project Explorer -ohjelmaa hiiren kakkospainikkeella UserForm1 ja sen jälkeen Näytä koodi.

11. Valitse TextBox1 vasemmalta avattavasta luettelosta. Valitse Muuta oikealta avattavasta luettelosta.

12. Lisää seuraava koodirivi:

Private Sub TextBox1_Change()

GetData

End Sub

13. Kaksoisnapsauta Project Explorerissa UserForm1-ohjelmaa.

14. Kaksoisnapsauta Muokkaa / Lisää komentopainiketta.

15. Lisää seuraava koodirivi:

Private Sub CommandButton1_Click()

EditAdd

End Sub

16. Kaksoisnapsauta Clear command -painiketta.

17. Lisää seuraava koodirivi:

Private Sub CommandButton2_Click()

ClearForm

End Sub

Selitys: nämä subs kutsuvat muita alustoja, jotka aiomme luoda toisessa.

18. Kaksoisnapsauta Sulje-komento-painiketta.

19. Lisää seuraava koodirivi:

Private Sub CommandButton3_Click()

Unload Me

End Sub

Selitys: tämä koodirivi sulkee käyttäjän muodon.

Aika perustaa subs. Voit siirtyä toiminto- ja alaryhmän läpi saadaksesi lisätietoja subsista. Jos kiire on, aseta vain seuraavat moduulit (Visual Basic Editorissa, napsauta Insert, Module).

20. Ensinnäkin mainita kolme muuttujaa tyyppiä integeri ja yksi muuttuja tyyppi Boolen. Ilmoita muuttujat Yleisilmoitusten osioon (moduulin yläosassa). Näin sinun on ilmoitettava muuttujat vain kerran ja voit käyttää niitä useissa alustoissa.

Dim id As Integer, i As Integer, j As Integer, flag As Boolean

21. Lisää GetData-osa.

Sub GetData()

If IsNumeric(UserForm1.TextBox1.Value) Then
    flag = False
    i = 0
    id = UserForm1.TextBox1.Value

    Do While Cells(i + 1, 1).Value <> ""

        If Cells(i + 1, 1).Value = id Then
            flag = True
            For j = 2 To 3
                UserForm1.Controls("TextBox" & j).Value = Cells(i + 1, j).Value
            Next j
        End If

        i = i + 1

    Loop

    If flag = False Then
        For j = 2 To 3
            UserForm1.Controls("TextBox" & j).Value = ""
        Next j
    End If

Else
    ClearForm
End If

End Sub

Selitys: Jos ID-tekstiruutu sisältää numeerisen arvon, Excel VBA etsii tunnusta ja lataa vastaavan tietueen. Käytämme Controls Collection -ohjelmaa helposti silmukoittamalla tekstilaatikoita. Jos Excel VBA ei löydä tunnusta (lippu on edelleen väärä), se tyhjentää toisen ja kolmannen tekstiruutuun. Jos ID-tekstiruutu ei sisällä numeerista arvoa, Excel VBA kutsuu ClearForm-alia.

22. Lisää ClearForm-osa.

Sub ClearForm()

For j = 1 To 3
    UserForm1.Controls("TextBox" & j).Value = ""
Next j

End Sub

Selitys: Excel VBA poistaa kaikki tekstilaatikot.

23. Lisää EditAdd sub.

Sub EditAdd()

Dim emptyRow As Long

If UserForm1.TextBox1.Value <> "" Then
    flag = False
    i = 0
    id = UserForm1.TextBox1.Value
    emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

    Do While Cells(i + 1, 1).Value <> ""

        If Cells(i + 1, 1).Value = id Then
            flag = True
            For j = 2 To 3
                Cells(i + 1, j).Value = UserForm1.Controls("TextBox" & j).Value
            Next j
        End If

        i = i + 1

    Loop

    If flag = False Then
        For j = 1 To 3
            Cells(emptyRow, j).Value = UserForm1.Controls("TextBox" & j).Value
        Next j
    End If

End If

End Sub

Selitys: Jos ID-tekstilaatikko ei ole tyhjä, Excel VBA muokkaa arkistossa olevaa tietuetta (päinvastoin kuin kirjaus on ladattu aiemmin). Jos Excel VBA ei löydä tunnusta (lippu on edelleen väärä), se lisää tietueen seuraavalle tyhjälle riville. Muuttuja emptyRow on ensimmäinen tyhjä rivi ja lisää joka kerta, kun levy lisätään.

24. Poistu Visual Basic -editorista syöttämällä alla olevat tarrat riviin 1 ja testaamalla Userform.

Excel VBA Interactive Userform

Lue myös: