/ / Excel VBA Interactive Userform

Excel VBA Interactive Userform

U nastavku ćemo pogledati program u Excel VBA koji stvara interaktivni Userform, Korisnički obrazac koji ćemo stvoriti izgleda ovako:

Excel VBA Interactive Userform

Obrazloženje: svaki put kad unesete vrijednost u ID okvir za tekst, Excel VBA učitava odgovarajući zapis. Kada kliknete gumb Uredi / Dodaj, Excel VBA uređuje zapis na listi ili dodaje zapis kad ID još ne postoji. Gumb Clear uklanja sve tekstne okvire. Zatvori gumb zatvara Userform.

Da biste stvorili ovaj Userform, izvršite sljedeće korake.

1. Otvorite Visual Basic Editor. Ako Project Explorer nije vidljiv, kliknite View, Project Explorer.

2. Kliknite Insert, Userform. Ako Toolbox ne pojavljuje automatski, kliknite View, Toolbox. Vaš bi se zaslon trebao postaviti kao u nastavku.

Postavljanje zaslona korisničkog formata u programu Excel VBA

3. Dodajte oznake, tekstne okvire (prvi na vrhu, drugi ispod prve, itd.) I gumbi za naredbe. Kada to završi, rezultat bi trebao biti u skladu s prethodno prikazanom korisničkom obrascu. Na primjer, izradite kontrolu tekstnog okvira klikom na Tekstualni okvir iz Toolboxa. Zatim možete povući tekstni okvir na Userform.

4. Možete promijeniti nazive i opise kontrola. Imena se koriste u Excel VBA kodu. Opisi su oni koji se pojavljuju na vašem zaslonu. Dobra je praksa mijenjati nazive kontrolnih jedinica, ali ovdje nije nužno jer imamo samo nekoliko kontrola u ovom primjeru. Da biste promijenili naslov naljepnica, tekstualnih okvira i gumba naredbi, kliknite Prikaz, Prozor svojstava i kliknite na svaku kontrolu.

5. Da biste prikazali Userform, stavite gumb naredbe na radni list i dodajte sljedeću liniju koda:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Sad ćemo stvoriti Sub UserForm_Initialize. Kada koristite metodu Prikaži za Korisnički obrazac, ovaj će podvrgnuti automatski.

6. Otvorite Visual Basic Editor.

7. U Project Exploreru desnom tipkom miša kliknite UserForm1 i zatim kliknite View Code.

8. S padajućeg popisa s lijeve strane odaberite Userform. Na padajućem popisu odaberite Inicijaliziraj.

9. Dodajte sljedeću liniju koda:

Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub

Objašnjenje: ova linija koda usredotočuje se na prvi tekstni okvir jer je to mjesto gdje želimo početi kada učitamo Userform.

Sada smo stvorili prvi dio Korisničkog obrasca. Iako već izgleda uredno, ništa se neće dogoditi kada unesemo vrijednost u ID tekstni okvir ili kada kliknemo neku od tipki za naredbu.

10. U Project Exploreru desnom tipkom miša kliknite UserForm1 i zatim kliknite View Code.

11. S padajućeg popisa s lijeve strane odaberite Tekstualni okvir1. Odaberite Promijeni s desnog padajućeg popisa.

12. Dodajte sljedeću liniju koda:

Private Sub TextBox1_Change()

GetData

End Sub

13. U Project Exploreru dvokliknite UserForm1.

14. Dvaput kliknite gumb Uredi / Dodaj naredbu.

15. Dodajte sljedeću liniju koda:

Private Sub CommandButton1_Click()

EditAdd

End Sub

16. Dvaput kliknite gumb za brisanje naredbe.

17. Dodajte sljedeću liniju koda:

Private Sub CommandButton2_Click()

ClearForm

End Sub

Objašnjenje: ove potpomognute druge pretplatnike stvaramo u sekundi.

18. Dvaput kliknite na gumb Zatvori naredbe.

19. Dodajte sljedeću liniju koda:

Private Sub CommandButton3_Click()

Unload Me

End Sub

Objašnjenje: ova linija koda zatvara Userform.

Vrijeme je za stvaranje subs. Možete proći kroz našu funkciju i pod poglavlje da biste saznali više o subs. Ako ste žurili, jednostavno postavite sljedeće pretince u modul (u Visual Basic Editoru kliknite Insert, Module).

20. Prvo, izjavite tri varijable tipa Integer i jednu varijablu tipa Boolean. Objavite varijable u odjeljku Opće izjave (pri vrhu modula). Na taj način morate samo objaviti varijable jednom i možete ih koristiti u višestrukim pretplatnicima.

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

21. Dodajte GetData pod.

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

Obrazloženje: Ako ID tekstni okvir sadrži numeričku vrijednost, Excel VBA traži ID i učitava odgovarajući zapis. Zbirku kontrolnih brojeva upotrebljavamo za jednostavno kruženje kroz tekstne okvire. Ako Excel VBA ne može pronaći ID (zastavica je i dalje lažna), ona prazni drugi i treći okvir za tekst. Ako ID tekstni okvir ne sadrži numeričku vrijednost, Excel VBA naziva ClearForm pod.

22. Dodajte ClearForm pod.

Sub ClearForm()

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

End Sub

Objašnjenje: Excel VBA briše sve tekstne okvire.

23. Dodajte podređeni EditAdd.

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

Obrazloženje: Ako ID tekstni okvir nije prazan, Excel VBA uređuje zapis na listi (suprotno od učitavanja zapisa kao što smo ranije vidjeli). Ako Excel VBA ne može pronaći ID (zastavica je i dalje lažna), ona dodaje zapis na sljedeći prazan redak. Varijabla emptyRow prvi je prazan red i povećava se svaki put kada se doda zapis.

24. Izađite iz Visual Basic Editor, unesite dolje prikazane naljepnice u red 1 i provjerite Userform.

Excel VBA Interactive Userform

Također pročitajte: