Žemiau apžvelgsime programą Excel VBA tai sukuria interaktyvi Userform . Vartotojo forma, kurią ketiname sukurti, atrodo taip:
Paaiškinimas: kai įvedate reikšmę ID teksto laukelyje, „Excel VBA“ įkelia atitinkamą įrašą. Spustelėjus mygtuką Redaguoti / pridėti, „Excel VBA“ redaguoja įrašą lape arba prideda įrašą, kai ID dar nėra. Mygtukas Išvalyti išvalo visus teksto laukelius. Mygtukas Uždaryti uždaro vartotojo formą.
Norėdami sukurti šią vartotojo formą, atlikite šiuos veiksmus.
1. Atidarykite „Visual Basic“ redaktorius . Jei „Project Explorer“ nematomas, spustelėkite „View“, „Project Explorer“.
2. Spustelėkite Insert, Userform. Jei įrankių rinkinys nerodomas automatiškai, spustelėkite Rodinys, įrankių dėžė. Jūsų ekranas turi būti nustatytas taip, kaip nurodyta toliau.
3. Pridėkite etikečių, teksto laukelių (pirmasis viršuje, antras po pirmuoju ir pan.) Ir komandų mygtukai. Kai tai bus baigta, rezultatas turėtų atitikti anksčiau pateiktą „Userform“ paveikslėlį. Pvz., Sukurkite teksto laukelio valdiklį spustelėdami „TextBox“ įrankių dėžėje. Tada galite vilkti teksto laukelį „Userform“.
kaip pridėti tendenciją „Excel 2016“
4. Galite pakeisti valdiklių pavadinimus ir antraštes. Pavadinimai naudojami „Excel“ VBA kode. Subtitrai yra tie, kurie rodomi jūsų ekrane. Gera praktika yra keisti valdiklių pavadinimus, tačiau čia tai nėra būtina, nes šiame pavyzdyje turime tik keletą valdiklių. Norėdami pakeisti etikečių, teksto laukų ir komandų mygtukų antraštes, spustelėkite Rodinys, ypatybių langas ir spustelėkite kiekvieną valdiklį.
5. Norėdami parodyti „Userform“, įdėkite a komandinis mygtukas darbalapyje ir pridėkite šią kodo eilutę:
Privatus SubCommandButton1_Click ()UserForm1.Show
Galas Sub
Dabar mes sukursime Sub UserForm_Initialize. Kai naudosite rodymo metodą naudotojo formai, šis poskyris bus vykdomas automatiškai.
6. Atidarykite „Visual Basic“ redaktorius .
7. „Project Explorer“ dešiniuoju pelės mygtuku spustelėkite UserForm1, tada spustelėkite View Code.
8. Kairiajame išskleidžiamajame sąraše pasirinkite Userform. Iš dešiniojo išskleidžiamojo sąrašo pasirinkite Inicijuoti.
9. Pridėkite šią kodo eilutę:
Privatus SubUserForm_Initialize ()TextBox1.SetFocus
Galas Sub
Paaiškinimas: šioje kodo eilutėje dėmesys sutelkiamas į pirmąjį teksto laukelį, nes čia norime pradėti, kai įkeliama „Userform“.
Dabar sukūrėme pirmąją „Userform“ dalį. Nors atrodo jau tvarkingai, dar nieko neįvyks, kai įvedame reikšmę į ID teksto laukelį arba kai spustelime vieną iš komandų mygtukų.
10. „Project Explorer“ dešiniuoju pelės mygtuku spustelėkite UserForm1, tada spustelėkite View Code.
11. Iš kairiojo išskleidžiamojo sąrašo pasirinkite TextBox1. Iš dešiniojo išskleidžiamojo sąrašo pasirinkite Keisti.
12. Pridėkite šią kodo eilutę:
Privatus SubTextBox1_Change ()„GetData“
Galas Sub
13. „Project Explorer“ dukart spustelėkite UserForm1.
14. Dukart spustelėkite komandos Redaguoti / Pridėti komandą.
15. Pridėkite šią kodo eilutę:
Privatus SubCommandButton1_Click ()EditAdd
Galas Sub
16. Dukart spustelėkite komandų išvalymo mygtuką.
17. Pridėkite šią kodo eilutę:
Privatus SubCommandButton2_Click ()Švari anketa
Galas Sub
Paaiškinimas: šie abonentai skambina kitiems abonentams, kuriuos ketiname sukurti per sekundę.
18. Dukart spustelėkite komandų uždarymo mygtuką.
19. Pridėkite šią kodo eilutę:
Privatus SubCommandButton3_Click ()Iškrauti mane
Galas Sub
Paaiškinimas: ši kodo eilutė uždaro „Userform“.
Laikas sukurti antrinius. Galite eiti per mūsų Funkcija ir sub skyriuje, kad sužinotumėte daugiau apie abonentus. Jei skubate, tiesiog įdėkite šiuos modulius į modulį („Visual Basic“ redaktoriuje spustelėkite Įterpti, Modulis).
20. Pirmiausia deklaruokite tris „Integer“ tipo kintamuosius ir vieną „Boolean“ tipo kintamąjį. Kintamuosius nurodykite skyriuje Bendrosios deklaracijos (modulio viršuje). Tokiu būdu jums tereikia deklaruoti kintamuosius vieną kartą ir galite juos naudoti keliuose abonentuose.
Nė vienasidKaip Sveikasis skaičius, iKaip Sveikasis skaičius, jKaip Sveikasis skaičius, vėliavaKaip Būlinį21. Pridėkite „GetData“ antrinę dalį.
Sub„GetData“ ()JeiIsNumeric (UserForm1.TextBox1.Value)Tada
vėliava =Netiesa
i = 0
id = UserForm1.TextBox1.Value
Daryk NorsLąstelės (i + 1, 1). Vertė '
JeiLąstelės (i + 1, 1). Vertė = idTada
vėliava =Tiesa
Dėlj = 2Į3
UserForm1.Controls ('TextBox' & j) .Value = Ląstelės (i + 1, j).
Kitasj
Galas Jei
i = i + 1
Kilpa
Jeivėliava =Netiesa Tada
Dėlj = 2Į3
UserForm1.Controls ('TextBox' & j) .Verta = '
Kitasj
Galas Jei
Kitas
Švari anketa
Galas Jei
Galas Sub
Paaiškinimas: Jei teksto laukelyje ID yra skaitinė reikšmė, „Excel VBA“ ieško ID ir įkelia atitinkamą įrašą. Mes naudojame Valdiklių kolekcija lengvai pereiti per teksto laukelius. Jei „Excel VBA“ neranda ID (vėliava vis tiek yra klaidinga), ji ištuština antrąjį ir trečiąjį teksto laukus. Jei teksto laukelyje ID nėra skaitinės reikšmės, „Excel VBA“ iškviečia „ClearForm“ antrinę dalį.
22. Pridėkite „ClearForm“ antrinę dalį.
SubŠvari anketa()Dėlj = 1Į3
UserForm1.Controls ('TextBox' & j) .Verta = '
Kitasj
Galas Sub
Paaiškinimas: „Excel VBA“ išvalo visus teksto laukelius.
23. Pridėkite „EditAdd“ poskyrį.
SubEditAdd ()Nė vienasemptyRowKaip Ilgas
JeiUserForm1.TextBox1.Value 'Tada
vėliava =Netiesa
i = 0
id = UserForm1.TextBox1.Value
emptyRow = WorksheetFunction.CountA (Diapazonas ('A: A')) + 1
Daryk NorsLąstelės (i + 1, 1). Vertė '
JeiLąstelės (i + 1, 1). Vertė = idTada
vėliava =Tiesa
Dėlj = 2Į3
Ląstelės (i + 1, j). Vertė = UserForm1.Controls („TextBox“ & j).
Kitasj
Galas Jei
i = i + 1
Kilpa
Jeivėliava =Netiesa Tada
Dėlj = 1Į3
Ląstelės (emptyRow, j) .Value = UserForm1.Controls ('TextBox' & j) .Value
Kitasj
Galas Jei
Galas Jei
Galas Sub
Paaiškinimas: Jei ID teksto laukas nėra tuščias, „Excel VBA“ redaguoja lapo įrašą (priešingai nei įkeliant įrašą, kaip matėme anksčiau). Jei „Excel VBA“ neranda ID (vėliava vis dar yra klaidinga), įrašas įtraukiamas į kitą tuščią eilutę. Kintamasis emptyRow yra pirmoji tuščia eilutė ir didėja kiekvieną kartą pridedant įrašą.
24. Išeikite iš „Visual Basic“ redaktoriaus, įveskite toliau pateiktas etiketes į 1 eilutę ir išbandykite „Userform“.
kaip „Excel“ reitinguoti nuo aukščiausio iki žemiausio
Eiti į kitą skyrių: diapazonas