/ / Loop чрез контроли в Excel VBA

Отидете през контролите в Excel VBA

Само с няколко реда код можем лесно линия през контролите върху Excel VBA Userform, Потребителската форма, която ще създадем, изглежда така:

Отидете през контролите в Excel VBA

За да създадете този Userform, изпълнете следните стъпки.

1. Отворете редактора на Visual Basic. Ако Explorer на проекта не е видим, щракнете върху Преглед, Проект Explorer.

2. Щракнете върху Вмъкване, Потребител. Ако Toolbox не се покаже автоматично, кликнете върху View, Toolbox. Вашият екран трябва да бъде настроен, както е описано по-долу.

Настройка на потребителския екран в Excel VBA

3. Добавете етикета, квадратчетата за отметки (първо отгоре, втората под първата и т.н.) и командния бутон. След като това бъде завършено, резултатът трябва да съответства на картината на потребителския формат, показан по-рано. Например, създайте контрола на квадратчето за отметка, като кликнете върху CheckBox от Toolbox. След това можете да плъзнете квадратче за отметка в Userform.

4. Можете да промените имената и надписите на контролите. Имената се използват в кода Excel VBA. Надписите са тези, които се показват на екрана ви. Добра практика е да промените имената на контролите, но това не е необходимо тук, защото имаме само няколко контрола в този пример. За да промените надписа на Userform, етикетите, квадратчетата за отметки и командния бутон, кликнете върху View, Properties Window и кликнете върху всеки контролен панел.

5. За да покажете Userform, поставете командния бутон на работния лист и добавете следния ред:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Вече създадохме първата част от Userform. Въпреки че вече изглежда чист, нищо няма да се случи, когато щракнете върху бутона Изчистване.

6. Отворете редактора на Visual Basic.

7. В Project Explorer кликнете два пъти върху UserForm1.

8. Кликнете два пъти върху бутона Изчистване.

9. Добавете следните кодови редове:

Private Sub CommandButton1_Click()

Dim contr As control

For Each contr In UserForm1.Controls
    If TypeName(contr) = "CheckBox" Then
        contr.Value = False
    End If
Next

End Sub

Обяснение: Excel VBA преминава през всички контроли върху Userform. Функцията TypeName се използва за филтриране на контролите на квадратчетата за отметка. Ако контрола от квадратчето за отметка, Excel VBA премахва отметката от квадратчето за отметка. contr е избран случайно тук, можете да използвате което и да е име. Не забравяйте да се обърнете към това име в останалата част от кода си.

Резултат, когато кликнете върху бутона Изчистване:

Резултат от контрола

Също така се чете: