Следующая статья: DataObject и VBA
Содержание
Коллекция элементов управления Controls
Каждый элемент управления имеет в этой коллекции индекс, значение которого может быть числом или строкой. Для первого элемента управления индекс равен 0. Числовые индексы определяются порядком размещения элементов в коллекции. Строковое значение индекса соответствует имени (Name) элемента.
Задача.
Создать форму, имеющую пять элементов: метка, текстовое поле, список, две кнопки. Ввести в текстовое поле и список по умолчанию текст «поле 1», «список 1» (свойство text соответственно у каждого элемента). Первая кнопка «Нажми» выполняет следующее действие: вызывается диалоговое окно, в котором запрашивается разрешение на удаление очередного элемента формы (их пять). Ответ «да» или «нет» выполняет соответствующее действие. Кнопка «Закрыть» закрывает диалоговое окно.
Примечание. Используя коллекцию Controls, программно в цикле организовать скрытие (не удаление!) элементов управления диалогового окна MyForm (свойство Name формы).
Технология выполнения
- Запустите приложение Word, сохраните новый документ.
- Создайте форму в режиме конструктора.
Форма задачи
- Обработайте кнопки Нажми и Закрыть.
Кнопка Нажми
Private Sub CommandButton1_Click()
For Each Ctrl In myForm.Controls 'цикл по всем элементам управления
msgCode=vbYesNo + vbQuestion
'Вопрос об очередном элементе управления:
Answer=MsgBox(prompt:="Cкрыть элемент " & Ctrl.Name,
Buttons:=msgCode, Title:="Bonpoc")
If Answer=vbYes Then 'ответ «Да»
Ctrl.Visible=False 'скрыть очередной элемент
End If
Next Ctrl
End Sub
Кнопка Закрыть
Private Sub CommandButton2_Click()
Unload Me
End Sub
- Откомпилируйте приложение.
- Запустите на выполнение.
Примечание. Скрытие ненужных элементов в форме можно произвести и другим способом (например, если в форме слишком много элементов, то до нужного добираться по циклу нерационально). Для этого используют свойство Click элементов управления.
Первоначальный запуск формы и вызов процедуры кнопки Нажми
Выполнение скрытия элемента label1 и следующий запрос
Вид формы перед удалением последнего элемента управления
В этом случае необходимо только щелкнуть по нужному элементу и прописать код, для каждого элемента свой:
Private Sub Label1_Click()
msgCode=vbYesNo + vbQuestion
Answer=MsgBox(prompt:="Cкрыть элемент",
Buttons:=msgCode, Title:="Вопрос")
If Answer=vbYes Then
Label1.Visible=False
Else
Label1.Visible=True
End If
End Sub
В результате работа формы будет более рациональной.
Работа формы по щелчку скрываемого элемента
Видео: «Подборка кандидатов на премию дарвина»
Видео современных кандидатов на премию Дарвина (самых идиотских поступков человека)

