Шаг 58 - Наборы элементов управления

В шаге "Шаг 46 - Доступ к одинаковым элементам управления" я показывал код как можно пройтись по всем элементам управления, но ничего практически не рассказал. Давайте обсудим это подробнее. VBA предоставляем массив включающий все элементы на форме с именем массива Controls:

У этого массива есть ряд методов, но только одно свойство. Это свойство Count. Данное свойство возвращает количество элементов на форме.

Private Sub CommandButton1_Click()

MsgBox UserForm1.Controls.Count

End Sub

С помощью этого массива можно ссылаться на элемент по индексу или по имени. У меня на форме два текстовых элемента, вот я их и спрячу двумя способами по нажатию на кнопку.

Private Sub CommandButton1_Click()

Controls(0).Visible = False

Controls("TextBox2").Visible = False

End Sub

Для того, чтобы пробежаться по всем элементам можно использовать цикл For Each. Следующий код скрывает все текстовые элементы управления:

Private Sub CommandButton1_Click()

Dim ctrl As Control

For Each ctrl In Controls

If TypeName(ctrl) = "TextBox" Then

ctrl.Visible = False

End If

Next ctrl

End Sub

Функция TypeName возвращает значение типа String, представляющее тип переменной за исключением типа определенного пользователем с помощью Type.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: