/ / Excel VBA interaktīvā lietotāja forma

Excel VBA Interactive Userform

Tālāk mēs apskatīsim programmu programmā Excel VBA kas rada interaktīvā lietotāja forma. Lietotāja forma, kuru mēs veidosim, izskatās šādi:

Excel VBA Interactive Userform

Paskaidrojums: ikreiz, kad ievadāt vērtību ID teksta lodziņā, Excel VBA ielādē attiecīgo ierakstu. Kad jūs noklikšķiniet uz pogas Rediģēt / Pievienot, Excel VBA rediģē ierakstu lapā vai pievieno ierakstu, ja ID vēl nav. Noklikšķiniet uz pogas Notīrīt visas teksta lodziņus. Poga Aizvērt aizver Userform.

Lai izveidotu šo Userform, izpildiet šādas darbības.

1. Atveriet Visual Basic Editor. Ja Project Explorer nav redzams, noklikšķiniet uz Skatīt, Project Explorer.

2. Noklikšķiniet uz Ielikt, Lietotāja forma. Ja rīkjosla neparādās automātiski, noklikšķiniet uz Skatīt, rīkjoslu. Jūsu ekrāns ir jāiestata tā, kā parādīts zemāk.

Userform ekrāna iestatīšana programmā Excel VBA

3 Pievienojiet etiķetes, teksta lodziņus (pirmā augšdaļā, otro zemāk pirmo un tā tālāk) un komandu pogas. Kad tas ir pabeigts, rezultātam jāatbilst iepriekš redzamā lietotāja formas attēlam. Piemēram, izveidojiet teksta lodziņa vadību, noklikšķinot uz Teksta lodziņa no rīkjoslas. Tālāk jūs varat vilkt teksta lodziņu lietotāja formā.

4 Jūs varat mainīt vadības ierīču nosaukumus un parakstus. Vārdi tiek izmantoti Excel VBA kodā. Paraksti ir tie, kas tiek parādīti ekrānā. Laba prakse ir mainīt kontroles nosaukumus, taču šeit tas nav nepieciešams, jo šajā piemērā ir tikai dažas kontroles. Lai mainītu etiķetes, teksta laukus un komandu pogas, noklikšķiniet uz Skatīt, rekvizītu loga un noklikšķiniet uz katras vadības pogas.

5. Lai parādītu Userform, ievietojiet komandas pogu savā darblapā un pievienojiet šādu koda rindiņu:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Tagad mēs izveidosim Sub UserForm_Initialize. Ja izmantojat Userform formātu Show method, šī apakšdaļa tiks automātiski izpildīta.

6. Atveriet Visual Basic Editor.

7. Projekta programmā labo pogu noklikšķiniet uz UserForm1 un pēc tam noklikšķiniet uz Skatīt kodu.

8. Izvēlieties Userform no kreisā nolaižamā saraksta. Izvēlieties Inicializēt labajā nolaižamajā sarakstā.

9. Pievienojiet šādu koda rindiņu:

Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub

Paskaidrojums: šī koda līnija koncentrē uzmanību uz pirmo teksta lodziņu, jo tā ir vieta, kur mēs vēlamies sākt, kad tiek ielādēta Userform.

Tagad mēs esam izveidojuši lietotāja formas pirmo daļu. Lai gan tas izskatās pievilcīgs jau, nekas nenotiks, kad mēs ievadīsim vērtību ID teksta lodziņā vai, noklikšķinot uz vienas no komandu pogām.

10. Projekta programmā labo pogu noklikšķiniet uz UserForm1 un pēc tam noklikšķiniet uz Skatīt kodu.

11. Izvēlieties TextBox1 no kreisā nolaižamā saraksta. Labajā nolaižamajā sarakstā izvēlieties Mainīt.

12. Pievienojiet šādu koda rindiņu:

Private Sub TextBox1_Change()

GetData

End Sub

13. Projekta Explorer divreiz noklikšķiniet uz UserForm1.

14. Divreiz noklikšķiniet uz pogas Rediģēt / Pievienot komandu.

15. Pievienojiet šādu koda rindu:

Private Sub CommandButton1_Click()

EditAdd

End Sub

16. Divreiz noklikšķiniet uz pogas Notīrīt komandu.

17. Pievienojiet šādu koda rindiņu:

Private Sub CommandButton2_Click()

ClearForm

End Sub

Paskaidrojums: šīs abonēšanas zvana citas sadaļas mēs izveidosim sekundē.

18. Divreiz noklikšķiniet uz pogas Aizvērt komandu.

19. Pievienot šādu koda rindu:

Private Sub CommandButton3_Click()

Unload Me

End Sub

Paskaidrojums: šī koda rindiņa aizver lietotāju formu.

Laiks, lai izveidotu subs. Lai uzzinātu vairāk par sadaļu, varat iziet sadaļu "Funkcija" un "Apakšnodaļa". Ja esat steidzies, vienkārši ievietojiet zemāk esošās apakšprogrammas modulī (Visual Basic Editor, noklikšķiniet uz Insert, Module).

20. Vispirms deklarējiet trīs mainīgā lieluma tipus Integer un vienu Boolean tipa mainīgo. Atzīmē mainīgos lielumus sadaļā Vispārīgās deklarācijas (moduļa augšdaļā). Tādā veidā jums vienreiz ir jādeklarē mainīgie lielumi, un tos var izmantot vairākās subsēsēs.

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

21. Pievienojiet apakšizvēlni 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

Paskaidrojums: Ja ID teksta lodziņā ir ciparu vērtība, Excel VBA meklē ID un ielādē attiecīgo ierakstu. Mēs izmantojam Controls Collection, lai viegli izveidotu teksta laukus. Ja Excel VBA nevar atrast ID (karodziņš joprojām ir False), tas iztukšo otro un trešo teksta lodziņu. Ja ID teksta lodziņā nav skaitliskās vērtības, Excel VBA izsauc ClearForm apakštipu.

22. Pievienojiet ClearForm apakškategoriju.

Sub ClearForm()

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

End Sub

Paskaidrojums: Excel VBA izdzēš visas teksta lodziņus.

23. Pievienojiet apakšizvēlni 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

Paskaidrojums: Ja teksta lodziņš ID nav tukšs, Excel VBA rediģē ierakstu lapā (pretēji tam, kā ierakstīt ierakstu, kā mēs to redzējām agrāk). Ja Excel VBA nevar atrast ID (karodziņš joprojām ir False), tas ieraksta ierakstu nākamajā tukšajā rindā. Mainīgais emptyRow ir pirmā tukšā rinda un palielinās katru reizi, kad tiek pievienots ieraksts.

24. Izejiet no Visual Basic Editor, ievadiet zemāk redzamās etiķetes rindā 1 un pārbaudiet Userform.

Excel VBA Interactive Userform

Lasīt arī: