/ / "Multiple List Box" pasirinkimai "Excel VBA"

"Multiple Variations" sąrašo laukeliai "Excel VBA"

The MultiSelect nuosavybė in Excel VBA leidžia vartotojui sąraše pasirinkti kelis elementus. "Userform", kurį ketiname kurti, atrodo taip:

"Multiple Variations" sąrašo laukeliai "Excel VBA"

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. Pridėkite sąrašo dėžutes (pirmiau kairėje, antrasis dešinėje), komandų mygtukus, pažymėkite langelius (pirmas kairėje, antrasis dešinėje), rėmelio ir parinkties mygtukus (pirmasis viršus, antrasis po pirmojo , ir taip toliau). Kai tai bus baigta, rezultatas turėtų atitikti anksčiau pateiktą "Userform" paveikslėlį. Pavyzdžiui, sukurkite sąrašo lango valdiklį, spustelėję ListBox iš įrankių juostos. Tada galite vilkti sąrašo laukelį Userform. Kai atvykstate į rėmelį "Pasirinkti tipą", nepamirškite pirmiausia atkreipti šio rėmelio, kol į jį įtraukiate tris pasirinkimo mygtukus.

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 "Userform" antraštę, komandų mygtukus, žymėjimo langelius, rėmelių ir parinkčių mygtukus, spustelėkite "View", "Properties" 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. Pirma, deklaruoti kintamąjį i tipo Integer. Paskelbkite kintamąjį skyriuje "Bendrosios deklaracijos" (kodo viršuje). Tokiu būdu jūs turite tik vieną kartą deklaruoti kintamąjį ir galite naudoti juos keliems subsams.

Dim i As Integer

9. Išplečiamajame sąrašo kairėje pasirinkite Userform. Iš dešiniojo išskleidžiamojo sąrašo pasirinkite Inicijuoti.

10. Įrašykite šias kodo eilutes:

Private Sub UserForm_Initialize()

With ListBox1
    .AddItem "Sales"
    .AddItem "Production"
    .AddItem "Logistics"
    .AddItem "Human Resources"
End With

OptionButton3.Value = True

End Sub

Paaiškinimas: bus užpildytas pirmasis sąrašo langas, o trečiasis pasirinkimo mygtukas - numatytasis.

Dabar sukūrėme pirmąją "Userform" dalį. Nors tai jau atrodo tvarkinga, niekas nebus įvykdytas spustelėjus komandų mygtukus arba kitus valdiklius.

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

12. Dukart spustelėkite mygtuką "Pridėti".

13. Įtraukite šias kodo eilutes:

Private Sub CommandButton1_Click()

For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then ListBox2.AddItem ListBox1.List(i)
Next i

End Sub

Paaiškinimas: Excel VBA kilpos per pirmąjį sąrašo langelį (sąrašo pirmojo sąrašo eilutėje yra nulio indeksas (0)) ir, jei pasirinkta, elementą įtraukia į antrąjį sąrašo laukelį.

14. Dukart spustelėkite mygtuką Pašalinti.

15. Įtraukite šias kodo eilutes:

Private Sub CommandButton2_Click()

Dim counter As Integer
counter = 0

For i = 0 To ListBox2.ListCount - 1
    If ListBox2.Selected(i - counter) Then
        ListBox2.RemoveItem (i - counter)
        counter = counter + 1
    End If
Next i

CheckBox2.Value = False

End Sub

Paaiškinimas: "Excel VBA kilpos per antrąjį sąrašo laukelį ir, jei pasirinkta, pašalina elementą. Kintamasis kintamasis seka pašalintų elementų skaičių.

16. Dukart spustelėkite pirmojo pasirinkimo mygtuką.

17. Įtraukite šias kodo eilutes:

Private Sub OptionButton1_Click()

ListBox1.MultiSelect = 0
ListBox2.MultiSelect = 0

End Sub

18. Dukart spustelėkite antrasis pasirinkimo mygtukas.

19. Įtraukite šias kodo eilutes:

Private Sub OptionButton2_Click()

ListBox1.MultiSelect = 1
ListBox2.MultiSelect = 1

End Sub

20. Dukart spustelėkite trečiojo pasirinkimo mygtuką.

21. Įtraukite šias kodo eilutes:

Private Sub OptionButton3_Click()

ListBox1.MultiSelect = 2
ListBox2.MultiSelect = 2

End Sub

Paaiškinimas: nustatymą "Pasirinkti tipą" galima pasirinkti spustelėjus pasirinkimo mygtukus. Anksčiau parodyta Userform paveikslėlis apibūdina kiekvieną nustatymą. Vietoj to, kad konfigūruoti šį nustatymą vykdymo metu, taip pat galite konfigūruoti šį nustatymą projektavimo metu. Norėdami tai padaryti, dešiniuoju pelės klavišu spustelėkite sąrašo lango valdiklį, tada spustelėkite Ypatybės. Nustatykite "MultiSelect" savybę 0 - fmMultiSelectSingle, 1 - fmMultiSelectMulti arba 2 - fmMultiSelectExtented.

22. Dukart spustelėkite pirmąjį žymės langelį.

23. Įtraukite šias kodo eilutes:

Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = True
    Next i
End If

If CheckBox1.Value = False Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = False
    Next i
End If

End Sub

Paaiškinimas: pažymėję pirmąjį žymės langelį, galima pasirinkti visus pirmojo sąrašo lango elementus arba juos panaikinti.

24. Dukart spustelėkite antrąjį žymės langelį, kad pridėtumėte tas pačias kodo eilutes. Tik "CheckBox1" pakeiskite "CheckBox2" ir "ListBox1" su "ListBox2".

Taip pat perskaitykite: