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

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

58_1.gif (4170 b)

У этого массива есть ряд методов, но только одно свойство. Это свойство 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.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.