/ / Вишеструка изборна листа у програму Екцел ВБА

Вишеструка изборна листа у програму Екцел ВБА

Тхе МултиСелецт својство ин Екцел ВБА омогућава кориснику да изабере више ставки у листи. Кориснички облик који ћемо креирати изгледа овако:

Вишеструка изборна листа у програму Екцел ВБА

Да бисте креирали овај Усерформ, извршите следеће кораке.

1. Отворите Висуал Басиц Едитор. Ако Пројецт Екплорер није видљив, кликните Виев, Пројецт Екплорер.

2. Кликните на Инсерт, Усерформ. Ако се Тоолбок не појави аутоматски, кликните Виев, Тоолбок. Ваш екран треба да буде подешен као доле.

Усерформ Сцреен Сетуп у Екцел ВБА

3. Додајте кутије са листама (прво са леве стране, друго са десне стране), командна дугмад, квадратиће (прво са леве стране, друго са десне стране), оквир и опциони дугмад (прво на врху, други испод првог , и тако даље). Када ово буде завршено, резултат мора бити у складу са приказом корисничког образца који је приказан раније. На пример, креирајте контролни оквир с листом кликом на ЛистБок из алатке. Затим можете превући поље са листама на Усерформ. Када стигнете у оквир "Селецт Типе", не заборавите прво да нацртате овај оквир пре него што поставите три тастера у њему.

4. Можете променити имена и називе контрола. Имена се користе у Екцел ВБА коду. Написи су они који се појављују на вашем екрану. Добра је пракса да промените имена контрола, али овде није неопходно, јер у овом примеру имамо само неколико контрола. Да бисте променили натпис Усерформа, командних дугмади, потврдних поља, оквира и дугмади опције, кликните Виев, Пропертиес Виндов и кликните на сваку контролу.

5. Да бисте приказали Усерформ, ставите командно дугме на свој радни лист и додајте следећу линију кода:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Сада ћемо креирати Суб УсерФорм_Инитиализе. Када користите методу Схов за Усерформ, овај суб ће аутоматски бити извршен.

6. Отворите Висуал Басиц Едитор.

7. У Пројецт Екплорер-у кликните десним тастером миша на УсерФорм1 и кликните на Виев Цоде.

8. Прво, декларишите варијаблу и типа Интегер. Обележите варијаблу у одјељку Опште декларације (на врху кода). На овај начин морате само једном да декларишете променљиву и можете их користити у више подскупова.

Dim i As Integer

9. Из падајуће листе изаберите ставку Усерформ. Изаберите Инитиализе са десне падајуће листе.

10. Додајте следеће линије кода:

Private Sub UserForm_Initialize()

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

OptionButton3.Value = True

End Sub

Објашњење: прво ће бити попуњено поље и трећа опција је постављена као подразумевана.

Сада смо направили први део Усерформ-а. Иако изгледа боље, ништа се неће догодити када кликнемо на командне дугмад или друге контроле.

11. У Пројецт Екплорер-у двапут кликните на УсерФорм1.

12. Двапут кликните на дугме Додај.

13. Додајте следеће линије кода:

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

Објашњење: Екцел ВБА петље кроз прво поље с пописом (индекс лист број нула (0) за прву ставку на листи), а ако је изабрано, додаје ставку у другу листу пописа.

14. Двапут кликните на дугме Уклони.

15. Додајте следеће линије кода:

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

Објашњење: Екцел ВБА петље кроз другу листу с листама и, ако је одабрано, уклања предмет. Бројчана променљива садржи нумеру уклоњених ставки.

16. Двапут кликните на дугме прве опције.

17. Додајте следеће линије кода:

Private Sub OptionButton1_Click()

ListBox1.MultiSelect = 0
ListBox2.MultiSelect = 0

End Sub

18. Двапут кликните на дугме друге опције.

19. Додајте следеће линије кода:

Private Sub OptionButton2_Click()

ListBox1.MultiSelect = 1
ListBox2.MultiSelect = 1

End Sub

20. Двапут кликните на дугме треће опције.

21. Додајте следеће линије кода:

Private Sub OptionButton3_Click()

ListBox1.MultiSelect = 2
ListBox2.MultiSelect = 2

End Sub

Објашњење: подешавање "Селецт Типе" се може изабрати кликом на дугмад опције. Слика Усерформ приказане раније даје опис сваког подешавања. Уместо да конфигуришете ово подешавање у вријеме извршавања, можете такођер конфигурисати ово подешавање у вријеме дизајна. Да бисте то остварили, десним тастером миша кликните на контролу над листом, а затим кликните на Пропертиес (Својства). Подесите својство МултиСелецт на 0 - фмМултиСелецтСингле, 1 - фмМултиСелецтМулти или 2 - фмМултиСелецтЕктентед.

22. Кликните двапут на прво поље за потврду.

23. Додајте следеће линије кода:

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

Објашњење: провером првог поља за потврду, све ставке из првог поља с пописом могу бити изабране / поништене.

24. Двапут кликните на друго поље за потврду да бисте додали исте линије кода. Само замените ЦхецкБок1 са ЦхецкБок2 и ЛистБок1 са ЛистБок2.

Такође прочитајте: