Controls vba excel свойства и методы

Обновлено: 07.07.2024

Коллекция элементов управления содержит все элементы управления в форме, отчете или подформе в другом элементе управления или присоединены к другому элементу управления. Коллекция Элементов управления является членом объектов Form, Report и SubForm.

Примечания

Вы можете привести отдельные элементы управления, посчитать их и задать их свойства в коллекции Controls. Например, вы можете перечислить коллекцию Controls конкретной формы и указать для свойства высоты Height каждого элемента управления конкретное значение.

Быстрее ссылаться на коллекцию элементов управления неявно, как в следующих примерах, которые относятся к элементу управления Под названием NewData в форме с именем OrderForm. Из следующих примеров синтаксиса самый быстрый способ ссылаться Me!NewData на управление.

Вы также можете ссылаться на отдельный элемент управления, явно ссылаясь на коллекцию элементов управления.

Кроме того, можно ссылаться на управление по его индексу в коллекции. Коллекция элементов управления индексация начинается с нуля.

Ключевое слово Me можно использовать для представления формы или отчета в коде только в том случае, если вы ссылались на форму или отчет из кода в модуле формы или модуле отчета. Если вы ссылались на форму или отчет из стандартного модуля или модуля другой формы или отчета, необходимо использовать полную ссылку на форму или отчет.

Чтобы работать с элементом управления в разделе формы или отчета, используйте свойство Section, чтобы вернуть ссылку на объект Section. Затем можно сослаться на коллекцию элементов управления объекта Section.

Два типа объектов Управления, элемент управления вкладками и групповой элемент управления вариантами, имеют коллекции элементов управления, которые могут содержать несколько элементов управления. Коллекция элементов управления, принадлежащая элементу управления группой опций, содержит любую кнопку параметра, контрольное окно, кнопку toggle или элементы управления меткой в группе опций.

Элемент управления вкладками содержит коллекцию Pages, которая является особым типом коллекции элементов управления. Коллекция Pages содержит объекты Page. Объекты page также являются объектами управления. Константа свойства ControlType для управления страницей — acPage. Объект Page, в свою очередь, имеет собственную коллекцию элементов управления, которая содержит все элементы управления на отдельной странице.

Другие объекты Control имеют коллекцию элементов управления, которая может содержать прикрепленную метку. Эти элементы управления включают текстовое поле, группу вариантов, кнопку параметра, кнопку переключений, поле для проверки, поле комбо, поле списка, кнопку команды, связанный кадр объекта и элементы управления кадром объектов.

Свойства

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Элементы управления имеют все виды свойств и много событий связанных с ними, но сейчас мы лишь рассмотрим несколько из них, которые используются в VBA программировании:

Давайте начнем с добавления 3-х элементов управления - Label , TextBox и CommandButton :

Давайте сейчас отредактируем название и свойства этого элемента управления (используя свойство Caption , которое содержит текст). Мы хотим получить следующий результат:


Сейчас, когда мы введем номер и нажмем ОК - ничего не произойдет.

Чтобы создать какое-то событие, мы начнем добавлять событие, которое введет значение из текстового окна в ячейки А1 и закроет Форму.

Вы можете получить доступ к опциям, которые показаны ниже, дважды щелкнув по элементу управления:

Данный выпадающий список содержит различные элементы управления и эту Форму.

Выберите кнопку (Button) и событие Click:

Введенное значение сейчас уже будет сохранено в ячейке А1 перед закрытием этой Формы ( UserForm ).

Добавьте вторую подпись (Label) и измените следующие свойства: Caption , Forecolor (color: red) and Visible (False, чтобы скрыть элемент управления по умолчанию) :


Введенное значение будет тестироваться каждый раз при вводе очередного символа.

Нам еще нужно предотвратить валидацию формы, если значение не является числом.

Вы можете скачать Excel файл с примером: userform1.xls



Checkboxes

Далее пример как использовать CheckBox :

Когда чекбокс отмеченный/неотмеченный, значение связанной ячейки может быть изменено из-за использования события Click :


В этом примере, чекбокс стартует неотмеченным, когда Форма открывается впервые.

Чтобы проверить бокс когда значения соответствующих ячеек является & quot; Отмечено & quot;, мы запустим проверку когда форму активировано, используя UserForm_Initialize:

Здесь вы можете посмотреть пример в готовом Excel файле: userform2.xls

Кнопки опций (Option Buttons)

Пользователь может выбрать только одну кнопку-опцию на "группу" в отличие от чекбоксов.

Чтобы создать "группу", сначала вставьте Frame, а затем OptionButton :

Здесь вы можете посмотреть пример в готовом Excel файле: userform3.xls

Как только форма была отправлена, мы введем данные в ячейку, которая связана с названием колонки и row_value chosen.

Для того, чтобы знать какие опции были выбраны, мы могли бы сделать то же самое что и в предыдущем примере (с чекбоксами), но мы используем цикл, чтобы уменьшить размер кода.

Мы собираемся использовать цикл For Each , тип цикла, который мы еще до этого не рассматривали. Этот цикл позволяет выполнять инструкции для каждого объекта в "группе объектов":

Сейчас эта форма вводит значение "Ячейка выбрана!" в ячейку, которая была выбрана.

Чтобы избежать баги, нам необходимо проверить , что пользователь выбрал правильно с двух наборов опций.

В этом примере, когда форма еще не завершена, кнопка "Подтверждение" ("Confirm") появится в сером (будет деактивирована). Это не самое простое решение, но это хороший пример того, почему функции/процедуры является Полезные внутри формы (UserForm).

Измените текст и свойство Enabled , чтобы деактивировать кнопку.


Результат будет следующий:

В предыдущем коде мы использовали два For Each цикла, чтобы получить значение опционных кнопок (option buttons). Сейчас нам нужно использовать те же значения для кнопки "Подтверждение" ("Confirm") и событие Click для десяти опций.

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

Начнем с предыдущего кода и модифицируя его, мы достигнем этого результата:

Все что нам осталось сделать, это создать процедуру, которая проверяет , что кнопки опций были выбраны корректно (через вызов двух функций), и которые активируют эту кнопку когда нужно.

Опять же, проверка выполняется в отдельной процедуре, чтобы избежать копирования кода 10 раз для каждого события каждого опционной кнопки:

Читайте также: