Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Пользовательская автоформа (создание)

    Создание пользовательской автоформы с помощью кода VBA и ее преимущества перед встроенной автоформой Excel. Отображение встроенной автоформы.

    Встроенная автоформа Excel

    Чтобы использовать в Excel встроенную автоформу, необходимо добавить кнопку ее вызова на панель инструментов. Как это сделать, смотрите в статье «Умная таблица» в Excel.

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

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

    Главный недостаток встроенной автоформы Excel заключается в невозможности использования раскрывающихся списков для заполнения ее полей. Для таблицы на изображении выше мы создадим с помощью кода VBA Excel пользовательскую автоформу с текстовыми полями и раскрывающимися списками.

    Создание пользовательской автоформы

    Рабочая таблица и списки

    Наименования полей и наборы данных для раскрывающихся списков при создании пользовательской автоформы будем брать с листа «Списки».

    Все изменения в наименования полей и наборы данных также вносятся на листе «Списки». На лист «Таблица» наименования граф копируются с листа «Списки» формулами, строка заголовков закреплена и добавлена кнопка «Новая запись» для вызова пользовательской автоформы.

    В коде VBA, создающем автоформу, используются имена листов: Лист1 («Таблица») и Лист2 («Списки»). Благодаря этому, можно переименовывать ярлычки листов без внесения изменений в код. Кнопка «Новая запись» добавлена на рабочий лист из коллекции «Элементы ActiveX».

    Создание проекта формы

    Добавьте в проект VBA пользовательскую форму UserForm1 и добавьте на нее кнопки CommandButton1 и CommandButton2:

    Размеры формы и кнопок не имеют значения, мы будем задавать их программно.

    Код инициализации автоформы

    В процессе инициализации формы мы будем добавлять элементы управления, их расположение и размеры. Наименования полей таблицы будут записаны в параметры Caption элементов Label.

    Поля таблицы для заполнения в пользовательской автоформе будут представлены элементами TextBox и ComboBox. Если в таблице на листе «Списки» под наименованием графы есть данные для раскрывающегося списка, на форму добавляется ComboBox, если нет – TextBox.

    Процедура размещается в модуле пользовательской формы UserForm1.

    Элементам управления формы, по желанию, можно добавить наименования и размеры шрифтов.

    Процедуры для кнопок

    Процедуру для кнопки рабочего листа «Новая запись», отображающую пользовательскую форму на экране, размещаем в модуле листа «Таблица»:

    Код кнопки пользовательской формы CommandButton1 («OK»), записывающий новую строку в таблицу, размещаем в модуле формы:

    Процедуру для кнопки пользовательской формы CommandButton2 («Отмена»), закрывающую форму, размещаем в модуле формы:


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    Добавить комментарий

    Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора.