/ / "Excel VBA Interactive Userform"

"Excel VBA Interactive Userform"

Žemiau apžvelgsime programą Excel VBA tai sukuria interaktyvus Userform. "Userform", kurį ketiname kurti, atrodo taip:

"Excel VBA Interactive Userform"

Paaiškinimas: kiekvieną kartą, kai įvedate vertę ID teksto laukelyje, "Excel VBA" įkelia atitinkamą įrašą. Spustelėjus mygtuką Redaguoti / Pridėti, Excel VBA redaguoja įrašą lape arba prideda įrašą, kai dar nėra ID. Mygtukas Išvalyti išvalo visas teksto laukelius. Uždaryti mygtukas uždaro "Userform".

Norėdami sukurti šį Userform, atlikite šiuos veiksmus.

1. Atidarykite "Visual Basic" redaktorių. Jei "Project Explorer" nematoma, spustelėkite "View", "Project Explorer".

2. Spustelėkite Insert, Userform. Jei įrankių dėžė automatiškai pasirodys, spustelėkite Rodyti, įrankių dėžutę. Jūsų ekranas turėtų būti nustatytas žemiau.

"Userform" ekrano sąranka "Excel VBA"

3. Įtraukite etiketes, teksto laukus (pirmą viršuje, antrąjį po pirmąja ir pan.) Ir komandų mygtukus. Kai tai bus baigta, rezultatas turėtų atitikti anksčiau pateiktą "Userform" paveikslėlį. Pavyzdžiui, sukurkite teksto laukelio valdiklį, spragtelėję "TextBox" iš įrankių juostos. Tada galite vilkti "Userform" teksto laukelį.

4. Galite keisti valdiklių pavadinimus ir antraštes. Vardai naudojami "Excel VBA" kodu. Subtitrai yra tie, kurie rodomi ekrane. Gera praktika pakeisti kontrolinių pavadinimų pavadinimus, tačiau čia nereikia, nes šiame pavyzdyje turime tik keletą kontrolių. Norėdami pakeisti etikečių antraštę, teksto laukus ir komandų mygtukus, spustelėkite Peržiūrėti, ypatybių langą ir spustelėkite kiekvieną valdiklį.

5. Norėdami parodyti "Userform", į savo darbalapį pridėkite komandų mygtuką ir pridėkite šią kodo eilutę:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Dabar ketiname sukurti Sub UserForm_Initialize. Kai naudojate "Show" metodą "Userform", šis pogrupis automatiškai bus įvykdytas.

6. Atidarykite "Visual Basic" redaktorių.

7. "Project Explorer" dešiniuoju pelės mygtuku spustelėkite "UserForm1" ir spustelėkite "Peržiūrėti kodą".

8. Iš kairės išskleidžiamojo sąrašo pasirinkite Userform. Iš dešiniojo išskleidžiamojo sąrašo pasirinkite Inicijuoti.

9. Įtraukti šią kodo eilutę:

Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub

Paaiškinimas: ši kodinė eilutė atkreipia dėmesį į pirmąjį teksto laukelį, nes tai yra ta vieta, kur mes norime pradėti, kai yra įkeltas "Userform" formatas.

Dabar sukūrėme pirmąją "Userform" dalį. Nors tai jau atrodo tvarkinga, nieko neįvyks, kai įveskite reikšmę ID teksto laukelyje arba spustelėdami vieną iš komandų mygtukų.

10. "Project Explorer" dešiniuoju pelės mygtuku spustelėkite "UserForm1" ir spustelėkite "Peržiūrėti kodą".

11. Iš kairiojo sąrašo pasirinkite "TextBox1". Iš dešinės išskleidžiamojo sąrašo pasirinkite Keisti.

12. Įrašykite šią kodo eilutę:

Private Sub TextBox1_Change()

GetData

End Sub

13. "Project Explorer" dukart spustelėkite "UserForm1".

14. Dukart spustelėkite mygtuką Redaguoti / Pridėti komandą.

15. Įtraukite šią kodo eilutę:

Private Sub CommandButton1_Click()

EditAdd

End Sub

16. Dukart spustelėkite mygtuką Išvalyti komandą.

17. Įtraukite šią kodo eilutę:

Private Sub CommandButton2_Click()

ClearForm

End Sub

Paaiškinimas: šie subs subscribe kiti posakiai mes ketiname sukurti per sekundę.

18. Dukart spustelėkite mygtuką Uždaryti.

19. Įtraukite šią kodo eilutę:

Private Sub CommandButton3_Click()

Unload Me

End Sub

Paaiškinimas: ši kodinė eilutė uždaro "Userform".

Laikas sukurti subsąskaitą. Galite pereiti per mūsų funkciją ir pogrupį, kad sužinotumėte daugiau apie sub. Jei skubate, paprasčiausiai į modulį įrašykite toliau nurodytus elementus ("Visual Basic" redaktoriuje spustelėkite "Įterpti", "Module").

20 Pirma, deklaruokite tris kintamuosius tipo "integer" ir vieną kintamąjį tipo "boolean". Paskelbkite kintamuosius skyriuje "Bendrosios deklaracijos" (modulio viršuje). Tokiu būdu jūs turite tik vieną kartą deklaruoti kintamuosius ir juos galite naudoti keliuose posne.

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

21. Pridėkite GetData sub.

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

Paaiškinimas: Jei ID teksto lauke yra skaitinė vertė, Excel VBA ieško ID ir įkelia atitinkamą įrašą. Mes naudojame "Controls Collection", kad galėtume lengviau pasiekti teksto laukus. Jei Excel VBA negali rasti ID (vėliava vis dar klaidinga), antroji ir trečioji teksto laukelis ištrinama. Jei ID teksto laukelyje nėra skaitinės reikšmės, "Excel VBA" iškviečia "ClearForm" sub.

22. Pridėti "ClearForm" sub.

Sub ClearForm()

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

End Sub

Paaiškinimas: "Excel VBA" išvalo visas teksto laukelius.

23. Pridėkite 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

Paaiškinimas: Jei ID teksto laukas nėra tuščias, "Excel VBA" redaguoja lapo įrašą (priešingai nei įkėlus įrašą, kaip matėme anksčiau). Jei Excel VBA negali rasti ID (vėliavėlė vis dar klaidinga), ji įrašo įrašą į kitą tuščią eilutę. Kintamasis emptyRow yra pirmasis tuščias eilutė ir padidėja kiekvieną kartą, kai įrašas pridedamas.

24. Išeikite iš "Visual Basic" redaktoriaus, įveskite žemiau pateiktas etiketes į 1 eilutę ir išbandykite "Userform".

"Excel VBA Interactive Userform"

Taip pat perskaitykite: