Шаг 279.
VBA в MSExcel. Планирование маршрута. Рабочий лист Города. Ввод расстояний между городами в табличную базу данных
На этом шаге мы рассмотрим реализацию данного действия.
Для ввода в табличную базу данных на листе База расстояния между НП и их названий, запишите макрос РасстоянияВвести
(рисунок 1).
Рис.1. Подпрограмма РасстоянияВвести
Этот макрос коренным образом отличается от всех созданных ранее. Одно из его отличий заключается в том, что при его выполнении для ввода
данных Excel не активизирует рабочий лист База и не активизирует ячейки, в которые эти данные будут введены. Следующее
его отличие - его запись осуществляется не в механической записи последовательности действий, а в наборе кода VBA с клавиатуры.
Присвоение ячейкам листа База значений, введенных в диапазон ячеек D2:G2 на рабочем листе Города,
производится с помощью кода VBA. Последовательность выполнения подпрограммы следующая:
- трем переменным X, Y и Z присваиваются значения, предварительно введенные в ячейки D2, E2 и G2
активного рабочего листа. Так как макрос РасстоянияВвести будет запускаться на выполнение кнопкой Расстояние ввести,
находящейся на рабочем листе Города, то необходимости указания имени этого рабочего листа в тексте подпрограммы нет. Макрос
довольно простой, и особой необходимости вводить в подпрограмму переменные не было. Это сделано с позиции читаемости.
- переменной Row присваивается значение определяемое с помощью функции CountA, которая проводит подсчет
непустых ячеек в столбце В (столбец может быть любой от А до D) на листе База и увеличенное на единицу.
Значение переменной Row указывает на номер первой пустой строки, с которой будет осуществляться ввод данных;
- в табличную базу данных на листе База необходимо ввести две строки, по четыре записи в каждой: НП отправления
(столбец А), НП прибытия (столбец В), соединенное название пункта отправления и прибытия, разделенные символом
пробел (столбец С) и расстояние между НП (столбец D). Эти значения последовательно присваиваются
четырем ячейкам слева направо сначала первой, а затем второй строки. Следовательно, адреса ячеек изменяются в следующей последовательности:
первая строка - Cells(Row, 1), Cells(Row, 2), Cells(Row, 3), Cells(Row, 4) и вторая строка -
Cells(Row + 1, 1), Cells(Row + 1, 2), Cells(Row + 1, 3) и Cells(Row + 1, 4).
Рассмотрим более подробно строку кода VBA для ввода данных в ячейку во второй заполняемой строке столбца С рабочего листа База:
Sheets("База").Cells(Row + 1, 3).Value = X & " " & Y
Прокомментируем приведенную формулу.
- Sheets("База") - ранее, при выделении или активизации ячейки, рабочий лист не указывался. В этой строке кода VBA
присвоение значения ячейке листа База задается без его активизации и с другого листа. По иерархии объект Sheets (Рабочий лист)
находится выше, чем объект Cells (Ячейка, Диапазон). Если не указать достаточный путь, в частности, рабочий лист, то ввод
данных будет производиться в ячейки на активном рабочем листе.
- Cells(Row + 1, 3) - координаты ячейки: Row+1(строка); 3 (столбец С).
- Value - ячейке будет присвоено значение.
- = - операция присваивания.
- X & " " & Y - значение ячейки D2 (или значение, возвращаемое формулой, находящейся в этой ячейке) объединить через
пробел со значением ячейки Е2 (или значение возвращаемое формулой). Знак & - операция объединения.
На следующем шаге мы рассмотрим реализацию проверки наличия повторяющихся записей.
Предыдущий шаг
Содержание
Следующий шаг