Шаг 255.
VBA в MSExcel. Создание текстовых документов на примере оформления генеральной доверенности на автомобиль. Лист Реквизиты

    На этом шаге мы рассмотрим формирование этого листа.

    На рабочем листе Реквизиты (рисунок 1) расположена база данных о клиентах и информация об автомобиле, которая необходима для автоматизированного создания доверенности.


Рис.1. Рабочий лист Реквизиты с информацией о клиентах и автомобилях

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

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

    На листе Реквизиты, для удобства группировки данных, заголовок содержит три строки (область А1:АF3). Данные первой строки проводят группировку по месту и дате заключения доверенности, данным по каждому клиенту и автомобилю. Во второй строке данные группируются более детализировано. Например, данные по клиенту: кто, удостоверяющий его документ и место проживания. По автомобилю: данные свидетельства о регистрации и данные об автомобиле. Из-за удобства этих группировок, отдельные ячейки всех трех строк заголовка объединены.

    В четверной строке введены порядковые номера столбцов от 0 до 31.

    Из-за того, что заголовок состоит из трех строк невозможно установить Автофильтр и применить диалоговое окно Форма. Это будет затруднять поиск необходимой информации и ввод данных.

    Удобный просмотр данных можно осуществлять при помощи фильтрации. Это будет возможно при удалении трех верхних строк 1:3. Но удалять эти строки на созданном рабочем листе Реквизиты не совсем корректно. Для этого желательно создать точную копию листа, а после просмотра данных этот лист удалить. Но проведение этой операции вручную трудоемко. Для ускорения процесса последовательно запишем три макроса.

Макросы

Макрос СоздатьСписок
Для записи макроса СоздатьСписок выполните следующие действия:
  • поместите курсор на ярлычок листа Реквизиты и, нажав клавишу Ctrl, создайте точную копию листа Реквизиты(2) перемещением указателя мыши направо;
  • выделите строки 1:3 и выполнить команду Правка | Удалить;
  • выполните команду Данные | Фильтр | Автофильтр;
  • поместите табличный курсор в ячейку В2.

    Записанный макрос после ввода комментариев будет выглядеть, как на рисунке 2.


Рис.2. Окно программ Редактора Visual Basic с макросами создания точной копии листа, создания и присвоения кнопки и удаления листа

    Поместите на листе Реквизиты кнопку и назначьте ей созданный макрос.

    Вначале макрос создает копию листа Реквизиты. Цифра 6 во второй строке макроса указывает на то, что этот лист будет находиться шестым по счету слева направо.

Макрос УдалитьСписок
Если отсутствует потребность в созданной копии базы данных в виде списка, то для его удаления напишите макрос УдалитьСписок, выполнив последовательность действий:
  • поместив курсор на ярлычок листа Реквизиты(2), нажмите правую кнопку мыши и, выделив команду Удалить, нажмите на левую кнопку мыши;
  • в появившемся диалоговом окне Microsoft Excel с предупреждением о том, что отмена операции удаления выделенных листов будет невозможна, нажмите кнопку ОК.

Макрос СозданиеКнопки
Для создания кнопки, нажатие на которую вызовет выполнение макроса УдалитьСписок, запишите макрос СозданиеКнопки. При записи макроса предполагается, что панель Формы не активизирована, поэтому при записи макроса предполагается ее активизация. Действия:
  • выполните команду Вид | Панели инструментов | Формы и с помощью панели Формы создайте и разместите кнопку на листе Реквизиты(2);
  • в появившемся окне Назначить макрос (рисунок 3) назначьте макрос УдалитьСписок;


    Рис.3. Диалоговое окно Назначить макрос объекту

  • закройте панель Формы.
Теперь при нажатии на созданную кнопку лист Реквизиты(2) вместе с созданной кнопкой будет удален или самоликвидирован.

    После написания макроса, первую и четвертую строку кода, можете удалить, или перевести в разряд примечаний.

Введение выполнения макроса в другой макрос
Для того чтобы при создании листа Реквизиты(2) была создана кнопка удаления этого листа, нужно задать из макроса СозданиеСписка ссылку на выполнение макроса СозданиеКнопки. Для этого перейдите в Редакторе Visual Basic на макрос СозданиеКнопки, выделите имя макроса после оператора Sub и скопируйте в буфер обмена. Перейдите в макрос СозданиеСписка и произведите вставку в строке перед командой перехода на ячейку В2.

    Как видите, для того чтобы воспользоваться Автофильтром, необходимо таблице задать параметры списка, для чего нужно проделать ряд не совсем удобных процедур. Это не совсем удобно. Попытаемся обмануть Excel!

    Для этого выполните следующее:

    Почему это произошло будет описано в следующих шагах.

    На следующем шаге мы рассмотрим рабочий лист Действия.




Предыдущий шаг Содержание Следующий шаг