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

    На этом шаге мы перечислим некоторые механизмы, позволяющие автоматизировать процесс ввода данных.

    Здесь мы приведем несколько инструментов, позволяющих автоматизировать процесс ввода данных.

Очистка области ввода данных

    Для ввода данных в доверенность предназначен диапазон ячеек I16:I46. Но прежде, чем вводить новые данные, желательно произвести очистку этого диапазона. Для этого запишите макрос Очистка (рисунок 1).


Рис.1. Макросы ОбновитьФормулы, Очистка и СкопироватьПункт

    Запись макроса заключается в выделении этого диапазона ячеек, ячейки F13 и последующем выполнении команды Правка | Очистить | Содержимое или нажатии на клавишу Delete.

    Для очистки содержимого предназначена кнопка Очистка.

Ввод данных

    Данные, как правило, вводятся с клавиатуры, но если клиент приходит не в первый раз, то в базе клиентов имеются его паспортные данные. Поэтому достаточно ввести в ячейку D9 порядковый номер записи совершения операции в базе данных на листе Реквизиты. После этого выделить в столбце Н область ячеек с данными клиента и нажать на кнопку Скопировать пункты.

    Этой кнопке назначен макрос СкопироватьПункт (рисунок 1). Этот макрос копирует выделенный диапазон ячеек, выделяет ячейку, находящуюся на одну ячейку правее от правой верхней ячейки выделенного диапазона и производит вставку значений, определенных формулами, находящимися в этом диапазоне.

Проверка содержимого двух областей на соответствие

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

    В качестве примера рассмотрим соответствие содержащихся данных в диапазонах ячеек Н16:Н47 и I16:I47.

    В ячейку J16 введите формулу:

  =H16=I16
которая заключается в сравнении полученного результата формулы в ячейке Н16 и текстового содержания, введенного в ячейку I16. Если эти данные идентичны, то формула возвращает значение ИСТИНА, если есть различия, то значение ЛОЖЬ. Если скопировать эту формулу в ячейки J17:J47 и объединить полученные результаты, заключив их в формулу в ячейке F13:
  =ЕСЛИ(И(J16:J47);"Вводимые данные и данные базы данных соответствуют";
     "Соответствия НЕТ!")
то при наличии расхождений хоть в одной ячейке диапазона Н16:Н47 от ячеек диапазона I16:I47 формула сформирует запись: Соответствия НЕТ!, в противном случае: Вводимые данные и данные базы данных соответствуют.

    Анализ расхождений проводит логическая функция И, которая возвращает значение ИСТИНА, если все аргументы имеют значение ИСТИНА или возвращает значение ЛОЖЬ, если хотя бы один аргумент имеет значение ЛОЖЬ. Функция ЕСЛИ, в зависимости от полученного результата, возвращает текст, помещенный во второй или третий аргументы.

    Необходимости контролировать постоянно соответствие имеющихся данных нет. Поэтому для проверки можно записать макрос, который проверит соответствие данных в нужный момент времени и, кроме того, избавит приложение от лишних формул.

    Механическая запись макроса ПроверкаДанныхВвод производится в следующей последовательности:

    Сравните записанный макрос с макросом, приведенным на рисунке 2.


Рис.2. Макрос ПроверкаДанныхВвод

    Как видите, отличия существенны, и заключаются в присутствии инструкции Select Case и некотором изменении кода VBA.

    Основное отличие отредактированного макроса (подпрограммы) заключается в том, что в процессе его выполнения не происходит выделение (активизация) никаких ячеек и диапазонов для ввода формул или очистки области. Об этом говорит отсутствие соответствующих операторов (Select) в тексте подпрограммы. Макрос производит ввод формул в ячейки, замену их на вычисленное значение, окраску шрифта и очистку диапазона не выделяя эти ячейки.

    Какие это дает преимущества? Во-первых, увеличение быстродействия в несколько раз, во-вторых, лучшую читаемость и понятность текста кода и, в-третьих, отсутствие мельтешения на экране монитора, вследствие перемещения табличного курсора по рабочему листу как это было ранее. Подпрограмма при помощи редактирования создается довольно быстро.

    Опишем некоторые детали кода VBA макроса.

    В ячейку F13 вводится формула, а затем при помощи строки:

  Range("F13").Value = Range("F13")
ячейке F13 при помощи свойства Value присваивается значение равное значению, вычисленному формулой, находящейся в этой же ячейке. Ранее подобная операция совершалась с привлечением диалогового окна Специальная вставка, что на одну строку кода VBA больше и занимало значительно больше времени.

    Вторая деталь - это строка:

  Range("J16:J47").ClearContents
при помощи которой производится очистка содержимого диапазона ячеек, не выделяя его.

    Инструкция Select Case выполняет одну из нескольких групп инструкций в зависимости от значения выражения.

    Инструкция - это синтаксически завершенная конструкция, представляющая отдельное действие, описание или определение, и, как правило, занимает одну строку.

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

    Синтаксис инструкции Select Case содержит следующие элементы

Select Case выражение
  [Case списокВыражений-n
    [инструкции-n]] ...
  [Case Else
    [инструкции_else]]
End Select

    выражение - обязательный аргумент. Это любое числовое выражение или строковое выражение.

    списокВыражений-n - обязательный аргумент при наличии предложения Case. Это список с разделителями, состоящий из одной или нескольких форм следующего вида:

    Ключевое слово To задает диапазон значений. При использовании ключевого слова To перед ним должно находиться меньшее значение. Ключевое слово Is с операторами сравнения задает диапазон значений. Если ключевое слово Is не указано, оно вставляется по умолчанию.

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

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

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

    Рассмотрим выполнение Select Case на нашем примере:

    На следующем шаге мы рассмотрим перенос данных из листа Ввод в лист Реквизиты.




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