Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка СППО.DOC
Скачиваний:
5
Добавлен:
15.07.2019
Размер:
12.41 Mб
Скачать

1.3 Объект Worksheet

Объекты Worksheet содержат ряд свойств и методов, с помощью которых можно добавлять новые листы в рабочую книгу, активизировать, скрывать, перемещать, копировать, переименовывать, удалять рабочие листы.

Каждый рабочий лист является объектом Worksheet, а Worksheets представляет собой коллекцию всех листов в данной рабочей книге.

Object. Worksheets(Index)

Object представляет ссылку на объект Workbook, который содержит рабочий лист.

Основные методы объекта Worksheet:

- Activate активизирует рабочий лист;

- Add добавление (вставка) новых листов.

Синтаксис:

Object.Worksheets.Add([Before] [, After] [, Count] [, Type])

Before указывает на лист, перед которым вставляется новый лист, After указывает рабочий лист, после которого добавляется новый лист. По умолчанию VBA добавит новый рабочий лист перед активным листом. Count представляет собой число добавляемых новых рабочих листов. Type представляет тип листа, который вы хотите вставить;

- CheckSpeling используется для проверки орфографии содержимого рабочего листа;

- Copy – копирование рабочего листа;

- Move – перемещение рабочего листа;

- Delete – удаление рабочего листа.

Основные свойства объекта Worksheet:

- Name – переименование рабочего листа.

Пример задания активному листу нового имени:

ActivSheer.Name = “Бюджет”

- Cells (Ячейки) – выбор ячеек листа.

Пример задания шрифта для всех ячеек листа:

Worksheets(“Лист1”).Cells.Font.Name = “Arial”

Пример 1

Sub

Dim wsNewWorkSheet As Worksheet

Объявляется переменная-объект

Set wsNewWorkSheet = Worksheets.Add

Переменной-объекту назначается создаваемый рабочий лист

wsNewWorkSheet.Name = Format (Date, _ “d mmmm yyyy”)

Свойство Name используется для создания имени в виде текущей даты. Функция Format применяется для управления внешним видом даты

End Sub

Пример 2

Sub УдалениеРабЛиста ( )

‘Удаляет все временные листы

Dim Sheet As Worksheet

Application.DisplayAlerts = False

Подавляет обычное диалоговое окно сообщения Excel при удалении рабочего листа

For Each Sheet InWorkbook(“Лаб5.xls”).Worksheets

Начинается цикл для просмотра всех листов рабочей книги Лаб5.xls

If InStr(1, Sheet.Name, “Temporary”) Then

Лист тестируется функцией InStr. Цель – не входит ли подстрока Temporary в имя данного рабочего листа

Sheet.Delete

Если да, то лист удаляется

End If

Next Sheet

Application.DisplayAlerts = True

Свойству DisplayAlerts присваивается значение True

1.4 Объект Range

В VBA ячейки трактуются как объект Range. В качестве объекта могут выступать:

  • отдельная ячейка;

  • выделенный диапазон ячеек;

  • несколько выделенных диапазонов ячеек;

- строка и столбец;

- трехмерный диапазон (т.е. состоящий из диапазонов, расположенных на разных рабочих листах).

Основные свойства объекта Range:

- Address (Адрес) возвращает текущее положение диапазона;

- Count (Счет) возвращает количество ячеек в диапазоне;

- Formula (Формула) возвращает формулу, по которой вычисляется значение, отображаемое в ячейке;

- Resize (Изменение размеров) позволяет изменять текущее выделение диапазона;

- Value (Значение) возвращает значения ячеек, составляющих диапазон.

Основные методы объекта Range:

- Offset возвращает объект Range, смещенный относительно конкретной ячейки на заданное количество строк и столбцов.

Object.Offset ([RowOffset] [, ColumnOffset])

где RowOffset – количество строк смещения относительно Object (по умолчанию 0);

ColumnOffset – количество столбцов смещения относительно объекта.

Пример использования метода Offset для указания диапазона.

Sub Выделение ( )

'Выделяет данные в диапазоне

Dim DBRows As Integer

WorkSheets(“Sheet1”).Select

Программа выбирает лист Sheet1

With Range(“Database”)

Выбирает объект Range с именем Database

DBRows = .Rows.Count

Вычисляется количество строк в диапазоне и сохраняется

.Offset(1,0).Resize(DBRows-1, _

.Colums. Count).Select

Возвращает диапазон, который смещен относительно диапазона Database на одну строку вниз. Используется свойство Resize для изменения размеров диапазона

End With

End Sub

- Select (Выделить) выделяет диапазон;

- Activate (Активизировать) активизирует диапазон;

- Clear (Очистить) очищает содержимое диапазона;

- Copy (Копировать) копирует содержимое диапазона;

- Cut (Вырезать) перемещает содержимое диапазона;

- Past Special (Специальная вставка) вставляет содержимое буфера в диапазон, используя при этом различные аргументы.

Если вам необходимо получить содержимое ячейки или требуется ввести данные в диапазон, используйте два предоставляемых VBA свойства объекта Range: Value и Formula.

Для получения содержимого ячейки:

- если требуется значение ячейки, используйте свойство Value. Например, если в ячейке А1 содержится формула =2*2, то выражение Range(“A1”).Value вернет значение 4;

- если вас интересует содержащаяся в ячейке формула, используйте свойство Formula. Например, если ячейка А1 содержит формулу =2*2, то выражение Range(A1).Format вернет текстовую строку “=2*2”.

Пример процедуры, выполняющей простой подсчет выплат по ссуде на листе Sheet3 активной рабочей книги.

Sub Арендная плата()

WorkSheets(“Sheet3”).Select

With Range(“A1”) 'Надписываем ячейки

.Value = “Расчет выплат по ссуде”

.Font.Bold = True

.Font.Italic = True

.Font.Size = 18

.Offset(1).Value = “Rata”

.Offset(2).Value = “Period”

.Offset(3).Value = “Amount”

.Offset(5).Value = “Payment”

End With

'Вводим формат ячеек и формулу

With Range(“A1”)

.Offset(1,1).NumberFormat = “0.00%”

.Offset(3,1).NumberFormat = “”$#,##0_); [Red]($#,##0)”

.Offset(5,1).NumberFormat = “”$#,##0.00_); [Red]($#,##0.00)”

.Offset(5,1).Formula = “=PMT($B$2)12, $B$3*12, $B$4)”

End With

End Sub

2 Практическая часть

З а д а н и е 1

Создайте процедуру, которая должна выполнять следующее:

- создать новую рабочую книгу;

- вставить в эту книгу новый рабочий лист;

- дать новому рабочему листу ваше имя;

- сохранить рабочую книгу под именем Лаб5.

Выполните процедуру. Откройте рабочую книгу Лаб5 и введите насколько значений в рабочий лист с вашим именем. Создайте новую процедуру с именем СохрЛаб5. Эта процедура должна определить, сохранена ли рабочая книга после внесения в нее изменений. Если книга была сохранена, то должно выводиться окно с соответствующим сообщением. Выполните эту процедуру.

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

3.1 Какой объект находится на высшем уровне иерархии объектов?

3.2 Какой метод применяется для создания новых рабочих книг и рабочих листов?

3.3 Как в VBA удалить рабочий лист из рабочей книги?

3.4 Какое свойство объекта Range позволяет определить адрес одного диапазона на основе адреса другого?

3.5 Как определить, какое количество ячеек составляет диапазон?

3.6 Какой метод применяется для удаления содержимого диапазона?

Лабораторная работа 6

Диаграммы.

Усовершенствованная процедура построения диаграмм

Цель работы: приобретение навыков записи макроса, создающего диаграмму, исследования и изменения кода этого макроса в VBA.

1 Теоретические сведения

Построение диаграмм – одно из самых популярных средств Excel. Можно автоматизировать процесс построения диаграмм. Для этого необходимо записать макрос, а затем усовершенствовать процедуру построения диаграмм.

Код макроса построения круговой диаграммы по таблице 6.1

Таблица 6.1

Товар

Объем продаж

Яблоки

1250

Груши

795

Апельсины

1400

Лимоны

1000

Персики

1550

будет иметь вид:

Sub КруговаяДиаграмма ( )

Charts.Add

ActiveChart.ChartType = xlPie

ActiveChat.SetSourceData _

Sourse := Sheets(“Лист1”).Range(“A1:B6”), PlotBy := xlColumns

ActiveChart.Location Where := xlLocationAsObject, Name := “Лист1”

ActiveChart.ApplyDataLabels _

Type := xlDataLabelsShowPercent, LegendKey := False, _

HasLeaderLines := True

ActiveChart.ChartTitle.Select

Selection.AutoScaleFont = True

With Selection.Font

.Name = “Arial”

.FontStyle = “полужирный курсив”

.Size = 14

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

.ColorIndex = xlAutomatic

.BackGround = xlAutomatic

End With

End Sub

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

ActiveChart.SetSourceData _

Sourse := Sheets(“Лист1”).Range(“A1:B6”), _

PlotBy := xlColumns

Внесем изменения в процедуру. В верхней части процедуры введем две строки кода с объявлением и заданием новой переменной:

Dim rCurrentRange As Range

Set rCurrentRange = Selection

В операторе задания источника данных замените непосредственное указание диапазона ячеек Sheets(“Лист1”).Range(“A1:B6”) на переменную rCurrentRange:

ActiveChart.SetSourceData _

Sourse := rCurrentRange, PlotBy := xlColumns

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

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

макросов. “Изнанкой” этой процедуры является применение оператора If. Этот оператор проверяет значение свойства Columns.Count, равное количеству столбцов в выделенном диапазоне ячеек. Если это значение равно 2, то строится круговая диаграмма; если больше двух – строится гистограмма; если выделен один столбец, то выводится соответствующее окно сообщения. Работу этого оператора можно представить в виде следующей схемы:

If Selection.Columns.Count = 2 Then

'код создания круговой диаграммы

Else Selection.Columns.Count > 2 Then

'код создания гистограммы

Else

MsgBox “Выделенный диапазон не подходит для построения диаграммы”

Exit Sub

End If

2 Практическое задание

З а д а н и е 1

Создайте экранную форму с пятью переключателями (рисунок 6.1):

Рисунок 6.1

- Круговая диаграмма;

- Объемная круговая диаграмма;

- Гистограмма;

- Гистограмма с накоплением;

- Объемная гистограмма с накоплением.

Создайте процедуру с именем ВыборТипаДиаграмм, которая выводила бы экранную форму. В экранной форме, в зависимости от числа столбцов в выделенном диапазоне ячеек, должен быть предустановлен или переключатель Круговая диаграмма, или Гистограмма. После выбора пользователем типа диаграммы и щелчка на кнопке ОК формы диаграмма выбранного типа должна быть построена.

Совет: объявите переменную, содержащую выделенный диапазон, как глобальную (public) переменную.

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

3.1 Какой оператор VBA используется для создания диаграммы?

3.2 Какое свойство объекта Application возвращает текущую активную диаграмму?

3.3 Какое свойство объекта Chart определяет тип создаваемой диаграммы?

3.4 Какой метод объекта Chart управляет данными, отображаемыми в диаграмме?

Лабораторная работа 7

Сводные таблицы.

Запись макроса для создания сводной таблицы

Цель работы: приобретение навыков записи макроса, создающего сводную таблицу; исследования и изменения кода этого макроса в VBA.

1 Теоретические сведения

Большие таблицы данных, состоящие из сотен строк и десятков столбцов, требуют специальных средств анализа таких массивов данных. Одним из эффективных средств Excel, позволяющих просматривать и анализировать большие таблицы данных, являются сводные таб

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

Сводные таблицы обладают следующими свойствами, эффективными при анализе данных:

- встроенные средства фильтрации данных – сводные таблицы автоматически фильтруют информацию, отображая только заданный уровень детализации данных;

- динамически изменяемый макет сводной таблицы – макет можно изменить простым перетаскиванием поля из одной области таблицы в другую;

- автоматическое вычисление промежуточных итоговых значений – для этого достаточно указать поле, по которому необходимо выполнить вычисления, кроме того, легко изменить вычисляющую функцию;

- поддержка широкого спектра источников данных – в качестве источников данных могут выступать рабочие листы Excel, отдельные диапазоны ячеек, внешние базы данных различных типов.

На рисунке 7.2 показан пример сводной таблицы, созданной на основе таблицы, приведенной на рисунке 7.1.

Сводная таблица состоит из нескольких областей (рисунок 7.3):

- область Страница – представляет самый верхний уровень детализации данных;

- область Строка – элементы полей, помещенные в эту область, используются в качестве заголовков строк и представляют более низкий уровень детализации;

- область Столбец – элементы полей, помещенные в эту область, используются как заголовки столбцов сводной таблицы;

- область Данные – элементы полей, помещенные в эту область, используются для вычислений.

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

Рисунок 7.1

Рисунок 7.2

Рисунок 7.3

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

Код макроса, строящего сводные таблицы, будет иметь вид:

Sub МояСводнаяТаблица ( )

ActiveWorkbook.PivotCaches.Add(SourceType := xlDataBase, _

SourceData := “Лист1 !R1C1:R37C4”) . CreatePivotTable _

TableDestination := “ ”, TableName := “СводнаяТаблица1”

ActiveSheet.PivotTableWizard _

TableDestination := ActiveSheet.Cells (3, 1)

ActiveSheet.Cells(3, 1).Select

ActiveSheet.PivotTables(“СводнаяТаблица1”).SmallGrid = False

With ActiveSheet.PivotTables(“СводнаяТаблица1”). _

PivotFields(“Год”)

.Orientation = xlPageField

.Position = 1

End With

With ActiveSheet.PivotTables(“СводнаяТаблица1”). _

PivotFields(“Район”)

.Orientation = xlRowField

.Position = 1

End With

With ActiveSheet.PivotTables(“СводнаяТаблица1”). _

PivotFields(“Категория товара”)

.Orientation = xlColumnField

.Position = 1

End With

With ActiveSheet.PivotTables(“СводнаяТаблица1”). _

PivotFields(“Объем продаж”)

.Orientation = xlDataField

.Position = 1

End With

End Sub

Если вы попытаетесь выполнить макрос еще раз, то получите сообщение об ошибке, т.к. сводная таблица с тем именем, которое ука-зано в аргументе, уже создана. Чтобы сделать процедуру более гибкой, внесите в ее код следующие изменения (изменения и новые операторы выделены курсивом).

Sub МояСводнаяТаблица ( )

Dim ptSales As PivotTable

Set ptSales = ActiveWorkbook.PivotCaches.Add _

(SourceType := xlDataBase, SourceData := _

Лист1 !R1C1:R37C4”).CreatePivotTable(TableDestination := “ ”)

ActiveSheet.PivotTableWizard _

TableDestination := ActiveSheet.Cells (3, 1)

ActiveSheet.Cells(3, 1).Select

ptSales.SmallGrid = False

With ptSales.PivotFields(“Год”)

.Orientation = xlPageField

.Position = 1

End With

With ptSales.PivotFields(“Район”)

.Orientation = xlRowField

.Position = 1

End With

With ptSales.PivotFields(“Категория товара”)

.Orientation = xlColumnField

.Position = 1

End With

With ptSales.PivotFields(“Объем продаж”)

.Orientation = xlDataField

.Position = 1

End With

End Sub

2 Практическая часть

З а д а н и е 1

Создайте следующую таблицу (рисунок 7.4):

Рисунок 7.4

Запишите макрос, который на основе этой таблицы будет создавать сводную таблицу следующего вида (рисунок 7.5):

Рисунок 7.5

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

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

3.1 Назовите имена двух коллекций, которые необходимы для создания сводных таблиц.

3.2 Какое свойство объекта PivotField назначает поля данных областям сводной таблицы (т.е. областям страницы, строк, столбцов и данных)?

3.3 Назовите четыре области сводной таблицы.

3.4 Какой метод создает отчет сводной таблицы?

3.5 Истинно или ложно следующее утверждение: сводную таблицу можно создать только на основе данных, которые записаны на рабочем листе Excel?

Лабораторная работа 8