/ / Interaktívny používateľský formát programu Excel VBA

Interaktívny používateľský formát aplikácie Excel VBA

Nižšie sa pozrieme na program v sekcii Excel VBA ktorý vytvára interaktívny Userform, Forma User, ktorú chceme vytvoriť, vyzerá takto:

Interaktívny používateľský formát aplikácie Excel VBA

vysvetlenie: pri každom zadaní hodnoty do textového poľa ID Excel VBA načíta príslušný záznam. Keď kliknete na tlačidlo Upraviť / Pridať, aplikácia Excel VBA upraví záznam na hárku alebo pridá záznam, ak ID ešte neexistuje. Tlačidlo Clear vymaže všetky textové polia. Tlačidlo Zavrieť zatvorí Userform.

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 štítky, textové polia (najprv hore, druhý pod prvým atď.) A príkazové tlačidlá. Po dokončení tohto výsledku by mal byť výsledok v súlade s obrázkom užívateľa, ktorý je zobrazený skôr. Napríklad vytvorte ovládací prvok textového poľa kliknutím na TextBox z panelu nástrojov. Potom môžete pretiahnuť textové pole na Userform.

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 štítkov, textových polí a príkazových tlačidiel, 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úci riadok kódu:

Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub

Vysvetlenie: tento riadok kódu nastavuje zaostrenie na prvé textové pole, pretože toto je miesto, kde chceme začať po načítaní Userform.

Teraz sme vytvorili prvú časť Userform. Hoci to už vyzerá dobre, nič sa nestane, keď zadáme hodnotu do textového poľa ID alebo keď klikneme na jedno z príkazových tlačidiel.

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

11. V ľavom rolovacom zozname vyberte položku TextBox1. Vyberte položku Zmeniť v pravom rozbaľovacom zozname.

12. Pridajte nasledujúci riadok kódu:

Private Sub TextBox1_Change()

GetData

End Sub

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

14. Dvakrát kliknite na tlačidlo Upraviť / Pridať.

15. Pridajte nasledujúci riadok kódu:

Private Sub CommandButton1_Click()

EditAdd

End Sub

16. Dvakrát kliknite na tlačidlo Vymazať príkaz.

17. Pridajte nasledujúci riadok kódu:

Private Sub CommandButton2_Click()

ClearForm

End Sub

Vysvetlenie: tieto submená volajú ďalšie submená, ktoré budeme vytvárať za sekundu.

18. Dvakrát kliknite na tlačidlo príkazu Zavrieť.

19. Pridajte nasledujúci riadok kódu:

Private Sub CommandButton3_Click()

Unload Me

End Sub

Vysvetlenie: tento riadok kódu uzatvára Userform.

Čas na vytvorenie podkladov. Môžete si prečítať kapitolu Funkcia a Sub, aby ste sa dozvedeli viac o podpore. Ak sa ponáhľate, jednoducho umiestnite nasledujúce subsystémy do modulu (V editore jazyka Visual Basic kliknite na položku Vložiť, modul).

20. Najskôr deklarujme tri premenné typu Integer a jednu premennú typu Boolean. Označte premenné v sekcii Všeobecné vyhlásenia (v hornej časti modulu). Týmto spôsobom stačí deklarovať iba premenné a môžete ich použiť vo viacerých submenách.

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

21. Pridajte substrátu GetData.

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

vysvetlenie: Ak textové pole ID obsahuje číselnú hodnotu, služba Excel VBA vyhľadá ID a načíta príslušný záznam. Kolekciu ovládacích prvkov používame na jednoduché prechádzanie textovými políčkami. Ak program Excel VBA nemôže nájsť ID (príznak je stále nepravdivý), vyprázdní druhé a tretie textové pole. Ak textové pole ID neobsahuje číselnú hodnotu, aplikácia Excel VBA zavolá submenu ClearForm.

22. Pridajte submenu ClearForm.

Sub ClearForm()

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

End Sub

Vysvetlenie: Program Excel VBA vymaže všetky textové polia.

23. Pridajte podadresu 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

vysvetlenie: Ak textové pole ID nie je prázdne, aplikácia Excel VBA upraví záznam na hárku (opačný údaj nahrávania záznamu, ako sme už videli). Ak program Excel VBA nemôže nájsť ID (príznak je stále nepravdivý), pridá záznam do ďalšieho prázdneho riadku. Premenná emptyRow je prvý prázdny riadok a zvyšuje sa pri každom pridaní záznamu.

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

Interaktívny používateľský formát aplikácie Excel VBA

Tiež si prečítajte: