Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

624

.pdf
Скачиваний:
0
Добавлен:
06.12.2022
Размер:
2.74 Mб
Скачать

Ход работы Задание 1. Создайте на листе «База данных» названия

столбцов списка.

Так как текст этих названий уже имеется на листе Форма, можно содержимое ячеек В3 : В11 скопировать на лист База данных в ячейки А1 : I1.

По ря д ок р або т ы

1.Выделите на листе Форма ячейки В3 : В11. Нажмите сочетание клавиш Ctrl + C.

2.Перейдите на листе База данных в ячейку А1 и выпол-

ните команду Правка / Специальная вставка… (рис. 10).

Вдиалоге этой команды установите параметры:

а) Значения б) Транспонировать.

Рис. 10. Диалоговое окно команды «Специальная вставка»

3. К полученному в результате копирования тексту примените форматы:

а) выравнивание по горизонтали — по центру; б) выравнивание по вертикали — по центру; в) переносить по словам; г) шрифт — полужирный;

д) границы — внешние и внутренние.

Задание 2. Разработайте средства для просмотра записей базы данных с помощью созданной формы.

2 1

По ря д ок р або т ы 1. На листе База данных блоку А2 : А65536 присвойте имя

километры:

а) выделите на листе База данных блок А2 : А65536: для этого поставьте курсор в ячейку А2 и, удерживая клавишу

Shift, нажмите сначала клавишу End, а затем ;

б) выполните команду Вставка / Имя / Присвоить, введя

вдиалоге этой команды имя километры.

2.На листе «Форма» ячейке Н1 присвойте имя текущая_ запись и цвет шрифта — «белый».

3.Присвойте ячейке I1 имя всего_записей и цвет шрифта — «белый».

4.Введите в ячейку I1 формулу = СЧЕТЗ(километры) для определения количества введенных записей на листе База данных.

5.Введите в ячейку D3 формулу =текущая_запись & “ из ” & всего_записей.

6.Для ячейки D3 примените формат:

а) выравнивание по горизонтали — по центру; б) выравнивание по вертикали — по верхнему краю; в) цвет шрифта — серый 25 %.

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

(рис. 11).

Рис. 11. Вид формы с полосой прокрутки

2 2

8. Для внедренной полосы прокрутки необходимо назначить свойства (рис. 12):

а) минимальное значение = 1, б) максимальное значение должно быть равно числу запи-

сей в базе данных (это значение у нас хранится в ячейке с именем всего_записей),

в) шаг изменения = 1, г) связь с ячейкой, в которой отображается текущее значе-

ние — $H$1 (эта ячейка у нас носит имя текущая_запись).

Рис. 12. Формат полосы прокрутки

Максимальное значение в диалоговом окне команды Формат объекта можно указать только в виде числовой константы. Так как нам это значение нужно связать с ячейкой, то придется это сделать программным путем. К объекту «Полоса прокрутки»впроцедуреVBA можнообратиться так:Sheets(“Форма”). ScrollBars(1), где 1 — порядковый номер полосы прокрутки. Максимальное значение этого объекта назначается свойством

Max: Sheets(“Форма”).ScrollBars(1). Max = Range(“всего_

записей”).

9. Напишем текст процедуры для отображения в форме текущей записи, номер которой указан в ячейке Н1.

В этой процедуре используется стандартная функция рабо-

чего листа ПОИСКПОЗ (Application. WorksheetFunction.

2 3

Match), которая возвращает номер элемента в указанном диапазоне ячеек.

ПОИСКПОЗ (искомое_значение; просматриваемый_массив; тип_сопоставления)

Искомое_значение — этозначение, которое сопоставляется со значениямив аргументе просматриваемый_массив.Например, при поиске номера в телефонной книге имя абонента указывается в качестве искомого значения, а требуемым значением будет номер телефона. Искомое_значение может быть значением (числом, текстом или логической константой) или ссылкой на ячейку, содержащую число, текст или логическую константу.

Просматриваемый_массив — непрерывный интервал ячеек, возможно, содержащих искомые значения. Просматриваемый_массив может быть массивом или ссылкой на массив.

Тип_сопоставления — число –1, 0 или 1. Тип_сопостав-

ления указывает, как Microsoft Excel сопоставляет искомое_

значение со значениями в аргументе просматриваемый_массив.

Еслитип_сопоставленияравен1,тофункцияПОИСКПОЗ находит наибольшее значение, которое меньше либо равно аргументу искомое_значение. Просматриваемый_массив должен быть упорядочен по возрастанию.

Еслитип_сопоставленияравен0,тофункцияПОИСКПОЗ находит первое значение, которое в точности равно аргументу искомое_значение. Просматриваемый_массив может быть не упорядочен.

Если тип_сопоставленияравен –1, то функция ПОИСКПОЗ находит наименьшее значение, которое больше либо равно аргументу искомое_значение. Просматриваемый_массив должен быть упорядочен по убыванию.

Если тип_сопоставления опущен, то предполагается, что он равен 1.

Модулю, в котором будем писать макрос “отобразить запись”, присвоим имя Формы.

Sub отобразить_запись() Dim k As Integer, type1

Sheets(“Форма”).ScrollBars(1).Max = Range(“всего_записей”) k = Range(“текущая_запись”) номер текущей записи

2 4

If k = 0 Then Exit Sub если запись = 0, завершить работу процедуры

Range(“номер_км”) = Sheets(“База данных”).Cells(k + 1, 1) Range(“длина_км”) = Sheets(“База данных”).Cells(k + 1, 2)

выбор значения для переключателей

If Sheets(“База данных”).Cells(k + 1, 3) = “Р65” Then Range(“D5”) = 1

Else

Range(“D5”) = 2 End If

выбор значения для списка значений длин рельса

If Sheets(“База данных”).Cells(k + 1, 4) = “Б” Then Range(“D6”) = 1

ElseIf Sheets(“База данных”).Cells(k + 1, 4) = “12,5” Then Range(“D6”) = 2

Else

Range(“D6”) = 3 End If

Range(“число_дефектных_рельсов”) = Sheets(“База данных”). Cells(k + 1, 5) type1 = Sheets(“База данных”).Cells(k + 1, 6)

определение номера для поля со списком (тип скрепления)

Range(“D8”) = Application. WorksheetFunction.Match(type1, _ Range(“типы_скреплений”),0)

Range(“негодные_скрепления”) = Sheets(“База данных”).Cells(k + 1, 7) Range(“число_негодных_шпал”) = Sheets(“База данных”).Cells(k + 1, 8) Range(“загрязненность_балласта”) = Sheets(“База данных”).Cells(k + 1, 9) Range(“номер_км”).Select

End Sub

10.Назначим эту процедуру для полосы прокрутки, выбрав

вконтекстном меню команду Назначить макрос.

Задание 3. Разработайте средства для редактирования записей базы данных с помощью созданной формы.

По ря д ок р або т ы

1.На листе Форма в ячейку С5 введите формулу =ЕСЛИ(D5=1;"Р65";"Р75"); в ячейку С6 введем формулу

=ЕСЛИ(D6=1;"Б";ЕСЛИ(D6=2;12,5;25)); вячейку С8 введем формулу =ИНДЕКС(типы_скреплений;D8).

2.Методом автозаписи напишите процедуру для сохранения текущей записи, отредактированной на листе Форма. Для этого выберите команду Сервис / Макрос / Начать запись,

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

а) выделите блок ячеек С3 : С11;

2 5

б) нажмите сочетание клавиш Ctrl + C (копировать); в) перейдите на лист База данных в ячейку А2;

г) выбравкоманду Правка /Специальная вставка…, установитепараметры: ЗначенияиТранспонировать(см. рис. 10);

д) перейдите на лист Форма в ячейку С3;

е) выберите команду Сервис / Макрос / Остановить запись.

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

Sub сохранить_запись() Range(“C3:C11”).Select Selection.Copy Sheets(“База данных”).Select Range(“A2”).Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=True

Sheets(“Форма”).Select Range(“C3”).Select Application.CutCopyMode = False

End Sub

4. Отредактируйте текст этого макроса:

а) добавьте после заголовка макроса оператор k = Range(“текущая_запись”);

б) замените оператор Range(“A2”).Select на Range(“A” &

k+ 1).Select.

5.Отредактированный макрос поместите в модуль Формы.

6.На листе Форма внедрите кнопку с текстом Сохранить записьиназначьтедлянее макрос“сохранить_запись”(рис.13).

7.В модуле “форма” напишите процедуру для добавления новой записи:

Sub новая_запись()

номер текущей записи на 1 больше количества записей в базе данных

Range(“текущая_запись”) = Range(“всего_записей”) + 1

номер километра на единицу больше номера последней записи

If Range(“всего_записей”) = 0 Then

Range(“номер_км”) = 3345 начальный номер км ПЧ

Else

Range(“номер_км”) = _

Sheets(“База данных”).Cells(Range(“всего_записей”) + 1, 1) + 1 End If

длина километра чаще всего равна 1000 метров

2 6

Range(“длина_км”) = 1000

тип рельса чаще используется Р75 (это 2-й переключатель)

Range(“D5”) = 2

длина рельса чаще используется 25 м (в списке это 2-й элемент)

Range(“D6”) = 2

обнуляем ячейку для ввода числа дефектных рельсов

Range(“число_дефектных_рельсов”) = 0

настраиваем список с типами скреплений на начало

Range(“D8”) = 1

обнуляем ячейку для ввода числа негодных скреплений

Range(“негодные_скрепления”) = 0

обнуляем ячейку для ввода числа негодных шпал

Range(“число_негодных_шпал”) = 0

обнуляем ячейку для ввода загрязненности балласта

Range(“загрязненность_балласта”) = 0

активизируем ячейку с именем “номер_км”

Range(“номер_км”).Select

End Sub

8.На листе Форма внедрите кнопку и назначьте для нее макрос “новая_запись” (см. рис. 13).

9.В модуле “форма” напишите процедуру для удаления новой записи:

Sub удалить_запись() Dim v

v = MsgBox(“Удалить километр “ & Range(“номер_км”), vbYesNo + vbQuestion)

If v = 6 Then

Sheets(“База данных”).Rows(Range(“текущая_запись”) + 1).Delete If Range(“текущая_запись”) > Range(“всего_записей”) Then

Range(“текущая_запись”) = Range(“всего_записей”)

End If

отобразить_запись вызов процедуры отображения записи в форме

End If

End Sub

10.На листе Форма внедрите кнопку с текстом «Удалить»

иназначьте для нее макрос “удалить_запись” (см. рис. 13).

11.Продублируйте работу полосы прокрутки двумя кнопками «Назад» и «Далее» для отображения предыдущей и последующей записей соответственно. Для этого в модуле “форма” напишите две процедуры:

Sub назад()

if Range(“текущая_запись”) > 0 Then

2 7

Range(“текущая_запись”) = Range(“текущая_запись”) - 1 отобразить_запись

End If

End Sub Sub вперед()

If Range(“Текущая_запись”) < Range(“всего_записей”) Then Range(“Текущая_запись”) = Range(“Текущая_запись”) + 1

отобразить_запись

End If

End Sub

12. Для завершения сеанса редактирования базы данных напишитепроцедуру переходана листГлавное меню.Модулю, где будет написана эта процедура, присвойте имя “переходы”.

Sub главное_меню()

Sheets(“Главное меню”).Select

End Sub

13.На листе Форма внедрите кнопку с текстом “Закрыть”

иназначьте для нее макрос “главное_меню” (см. рис. 13).

14.Для редактирования базы данных напишите в модуле “переходы” процедуру активизации листа Форма:

Sub база_данных() Sheets(“Форма”).Select Range(“Текущая_запись”) = 1 отобразить_запись

End Sub

Рис. 13. Общий вид формы

2 8

15.На листе Главное меню внедрите кнопку с текстом База данных и назначьте для нее макрос “база_данных”.

16.Заполните базу данных в соответствии с заданием (см. введение), используя созданную форму.

Контрольныевопросы

1.Назначение команды Специальная вставка из меню «Данные».

2.Как определить количество записей в списке MS Excel?

3.Как организовать просмотр записей списка MS Excel в форме на рабочем листе?

4.Назначение стандартной функции ПОИСКПОЗ.

2. СОЗДАНИЕ ОТЧЕТОВ

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

В нашем примере необходимо получить несколько видов отчетов. Кнопки для выбора желаемого отчета поместим на лист Отчеты и назовем «Расчетная таблица», «Сортировка по проценту негодных шпал», «Гистограмма», «Круговая диаграмма», «Кольцевая диаграмма», «Фильтр1», «Фильтр2», «Фильтр3».

Для получения отчетов будем использовать макросы. Есть два способа создания макроса:

Автоматически записать последовательность действий, выполняемых пользователем в Excel.

Вручную ввести инструкции на особом листе Excel, называ-

емом модулем.

Для вводаинструкцийвмодулеиспользуется языкпрограм-

мирования Visual Basic.

Все макросы, необходимые для получения отчетов, поместим в один модуль и назовем его «Отчеты».

2.1. Создание расчетной таблицы

Цели работы:

закрепить навыки проектирования и форматирования таблиц;

закрепить навыки получения макросов автозаписью и ручным способом.

2 9

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

Ход работы Задание 1. Создайте под автозапись шапку таблицы и ее

название на листе «Расчетная таблица». По ря д ок р або т ы

1.После листа База данных добавьте лист и присвойте ему имя “Расчетная таблица».

2.Для формирования макроса по выполняемым далее действиям включите автозапись командой Сервис Макрос

Начать запись, задайте макросу имя «Шапка».

3.Введите названия граф в ячейки:

A2 — “Номер километра”;

B2 — “Длина километра, м”;

C2 — “Тип рельса”;

D2 — “Длина рельса, м”;

E2 — “Число дефектных рельсов в километре”;

F2 — “Тип скрепления”;

G2 — “Негодные скрепления, %”;

H2 — “Тип шпал”;

I2 — “Материал шпал”;

J2 — “Общее число шпал”;

K2 — “Число негодных шпал”;

L2 — “% негодных шпал”;

M2 — “Загрязненность балласта”, %;

N2 — “Потребность в среднем ремонте”.

4.Отформатируйте блок A2 : N2, для этого выделите его и назначьте параметры:

Шрифт — полужирный;

Размер — 8; Выравнивание по горизонтали и вертикали — «по

центру», «переносить по словам».

5.Введите в ячейку A1 название таблицы «Сведения о состоянии пути ПЧ».

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

3 0

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]