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

Код макроса

Нажав комбинацию клавиш <Alt+F11>, перейдите в редактор Visual Basic. В окне проектов откройте текущую рабочую книгу, а затем папку Modules (Модули), в которой найдете процедуру КруговаяДиаграмма. Полный код этой процедуры приведен в листинге 18.1.

Листинг 18.1. Процедура КруговаяДиаграмма

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

2:  Charts.Add

3:  ActiveChart.ChartType = xlPie

4:  ActiveChart.SetSourceData _

5:   Source:=Sheets("Лист1").Range("A1:B6"), PlotBy:=xlColumns

6:  ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист1"

7:  ActiveChart.ApplyDataLabels _

     Type:=xlDataLabelsShowPercent, LegendKey:=False, _

8:   HasLeaderLines:=True

9:  ActiveChart.ChartTitle.Select

10:  Selection.AutoScaleFont = True

11:  With Selection.Font

12:   .Name = "Arial"

13:   .FontStyle = "полужирный курсив"

14:   .Size = 14

15:   .Strikethrough = False

16:   .Superscript = False

17:   .Subscript = False

18:   .OutlineFont = False

19:   .Shadow = False

20:   .Underline = xlUnderlineStyleNone

21:   .ColorIndex = xlAutomatic

22:   .BackGround = xlAutomatic

23:  End With

24: End Sub

Рассмотрим код этой процедуры. Оказывается, первым действием, выполненным при записи макроса, было применение метода Add (Добавить) к коллекции Charts (Диаграммы):

Charts.Add

Итак, мы узнали тип созданного объекта и элементов какой коллекции он является. Все остальное в этой процедуре - задание свойств этого объекта и применение к нему методов. ActiveChart (Активная диаграмма) является свойством объекта Application (Приложение), которое возвращает текущую диаграмму. В строке 3 свойству ChartType (Тип диаграммы) присвоено значение xlPie, что в Excel обозначает круговую диаграмму. В следующей строке кода с помощью метода SetSourceData (Установка источника данных) задается диапазон ячеек с данными, на основе которых строится диаграмма. Метод Location (Положение) помещает активную диаграмму в указанный рабочий лист (или на отдельный лист диаграмм, если необходимо). Наконец, метод ApplyDataLabels (Применить подписи данных) выполняет те установки, которые вы сделали в третьем диалоговом окне мастера диаграмм на вкладке Подписи данных.

Далее процедура устанавливает свойства еще одного объекта: объекта ChartTitle (Заголовок диаграммы). Сначала этот объект выбирается (строка 9), затем задаются параметры шрифта заголовка. Отметим, что, хотя на вкладке Шрифт диалогового окна Формат названия диаграммы мы только задали размер шрифта и его начертание, в процедуре представлены все опции этой вкладки (строки 12 - 22).

Изменение кода макроса

Выполним макрос еще раз.

  1. Выделите ячейки А1:B3.

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

  3. Удалите все диаграммы из рабочего листа.

  4. Вернитесь к процедуре КруговаяДиаграмма. Нетрудно найти место в процедуре, которое надо как-то изменить, - это оператор, задающий источник данных для построения диаграммы:

ActiveChart.SetSourceData _

 Source:=Sheets("Лист1").Range("А1:В6"), _

 PlotBy:=xlColumns

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

Dim rCurrentRange As Range

Set rCurrentRange = Selection

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

ActiveChart.SetSourceData _

 Source:= rCurrentRange, PlotBy:=xlColumns

  1. Вернитесь в рабочую книгу.

  2. Выделите диапазон А1:B3. Выполните макрос КруговаяДиаграмма. В результате будет построена круговая диаграмма всего с двумя секторами (рис. 18.3).

Рис. 18.3. Теперь процедура стада более гибкой и может работать с любым диапазоном данных